Voglio eseguire una simulazione che utilizza come parametro un valore generato da una distribuzione di probabilità triangolare con limite inferiore A, modo B e limite superiore C. Come posso generare questo valore in Python? C'è qualcosa di semplice come expovariate (lambda) (da casuale) per questa distribuzione o devo codificare questa cosa?Python, SimPy: come generare un valore da una distribuzione di probabilità triangolare?
risposta
Se si scarica il pacchetto NumPy, ha una funzione numpy.random.triangular (sinistra, modalità, destra [, dimensione]) che fa esattamente ciò che si sta cercando.
Dato, stavo controllando la documentazione del caso da Python 2.4 ho perso questo:
random.triangular (basso, alto, modo) ¶ restituire un numero in virgola mobile casuale N tale che a basso < = N < = alto e con la modalità specificata tra questi limiti. I limiti inferiore e superiore sono impostati su zero e uno. L'argomento della modalità passa automaticamente al punto medio tra i limiti, dando una distribuzione simmetrica. Novità nella versione 2.6.
Supponiamo che la distribuzione non sia stata gestita da NumPy o dalla libreria standard Python.
In situazioni in cui le prestazioni non sono molto importanti, il campionamento del rifiuto è un utile trucco per ottenere i disegni da una distribuzione che non si ha utilizzando uno che si ha.
Per la vostra distribuzione triangolare, si potrebbe fare qualcosa di simile
from random import random, uniform
def random_triangular(low, high, mode):
while True:
proposal = uniform(low, high)
if proposal < mode:
acceptance_prob = (proposal - low)/(mode - low)
else:
acceptance_prob = (high - proposal)/(high - mode)
if random() < acceptance_prob: break
return proposal
È possibile tracciare alcuni campioni
pylab.hist([random_triangular(1, 6, 5) for t in range(10000)])
per assicurarsi che tutto sembra a posto.
Bel suggerimento generale! per OP, l'idea qui è relativa all'uniforme alla densità della distribuzione desiderata. –
- 1. Generazione di una distribuzione di probabilità
- 2. R: genera dati da una distribuzione di densità di probabilità
- 3. Stima di una probabilità data altre probabilità da un precedente
- 4. Generazione di numeri casuali nell'intervallo con una distribuzione di probabilità
- 5. Distribuzione probabilità per ritardi risposta sms
- 6. Come generare un numero casuale dalla distribuzione discreta specificata?
- 7. Python - Probabilità di modellazione
- 8. Calcolo della probabilità di una variabile casuale in una distribuzione in Python
- 9. Restituzione di un valore casuale da matrice con probabilità proporzionale al suo valore
- 10. Algoritmo per generare una maglia triangolare da una nuvola di punti
- 11. Campionamento casuale da un set di dati, preservando la distribuzione di probabilità originale
- 12. Creare una distribuzione di probabilità personalizzata per prelevare campioni casuali da SciPy
- 13. Come posso calcolare la massima stima di probabilità in Python
- 14. Come generare una distribuzione con una determinata media, varianza, inclinazione e curtosi in Python?
- 15. Ottenere un valore da una tupla python
- 16. Come generare un valore casuale negativo in python
- 17. Come generare un casuale normale distribuzione di interi
- 18. Come generare RandomForest Classifier da python?
- 19. Come generare punti casuali in una distribuzione circolare
- 20. Python: generazione di una distribuzione continua (tipo Maxwell-Boltzmann) per generare valori casuali
- 21. Come generare numeri con una distribuzione normale in SQL Server
- 22. Generatore casuale di numeri casuali di probabilità
- 23. Numeri casuali basati su una probabilità
- 24. Come effettuare una scelta in base a una probabilità percentuale
- 25. cambiando probabilità di ottenere un numero casuale
- 26. quando usare una distribuzione alternativa di Python?
- 27. Come generare un ID Hibernate con auto di generare con un valore di partenza
- 28. Distribuzione di programmi Python
- 29. Python - Come posso trovare la matrice quadrata di una matrice numpy triangolare inferiore? (con un triangolo superiore simmetrico)
- 30. Come calcolare le probabilità di una collisione negli algoritmi hash?
Questa è probabilmente una risposta migliore di quella accettata per la maggior parte dei casi d'uso. È piuttosto fastidioso che l'API abbia un ordine diverso da quello di NumPy! –