Ich möchte eine Simulation ausführen, die als Parameter einen Wert verwendet, der aus einer dreieckigen Wahrscheinlichkeitsverteilung mit Untergrenze A, Modus B und und Obergrenze C generiert wird. Wie kann ich diesen Wert in Python generieren? Gibt es etwas so Einfaches wie expovariate (Lambda) (zufällig) für diese Verteilung oder muss ich dieses Ding kodieren?Python, SimPy: Wie erstelle ich einen Wert aus einer dreieckigen Wahrscheinlichkeitsverteilung?
Antwort
Wenn Sie das NumPy-Paket herunterladen, hat es die Funktion numpy.random.trangular (links, Modus, rechts [, Größe]), die genau das tut, wonach Sie suchen.
Da war ich zufällig in der Dokumentation von Python 2.4 Überprüfung verpasste ich diese:
random.triangular (niedrig, hoch, mode) ¶ Return eine zufällige Gleitkommazahl N, so dass niedrige < = N < = hoch und mit dem angegebenen Modus zwischen diesen Grenzen. Die unteren und oberen Grenzen sind standardmäßig auf Null und Eins eingestellt. Das mode-Argument wird standardmäßig auf den Mittelpunkt zwischen den Grenzen gesetzt, was eine symmetrische Verteilung ergibt. Neu in Version 2.6.
Angenommen, Ihre Verteilung wurde nicht von NumPy oder der Python-Standardbibliothek verarbeitet.
In Situationen, in denen die Leistung nicht sehr wichtig ist, ist das Zurückweisungs-Sampling ein nützlicher Hack, um Auslosungen von einer Distribution zu erhalten, die Sie nicht verwenden.
Für Ihre Dreiecksverteilung, Sie so etwas wie
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
tun konnten Sie einige Beispiele
pylab.hist([random_triangular(1, 6, 5) for t in range(10000)])
, um sicherzustellen, plotten, dass alles in Ordnung aussieht.
Schöne allgemeine Hinweise! für OP bezieht sich hier die Idee auf die Dichte der gewünschten Verteilung. –
- 1. Python Plot prozentuale Konturlinien einer Wahrscheinlichkeitsverteilung
- 2. Python: Wie erstelle ich einen eindeutigen Dateinamen?
- 3. Wie erstelle ich eine Liste aus einer Textdatei in Python
- 4. Wie erstelle ich einen UIColor aus RGBA?
- 5. Wie erstelle ich einen MD5-Hash-Digest aus einer Textdatei?
- 6. Wie erstelle ich einen lazy-evaluated Bereich aus einer Datei?
- 7. Wie erstelle ich einen benutzerdefinierten Transformer aus einer UDF?
- 8. Wie erstelle ich einen Timer
- 9. Wie erstelle ich einen Zeitplaner?
- 10. Wie erstelle ich XElement aus einer Zeichenkette?
- 11. Erstellen einer benutzerdefinierten Wahrscheinlichkeitsverteilung zum Zeichnen von Stichproben aus SciPy
- 12. Wie erstelle ich einen Korb aus einer Datenbanktabelle in Orange (Python-Paket)?
- 13. Wie erstelle ich ein Wörterbuch aus einer Textzeile?
- 14. Wie erstelle ich ein Python-Dezimal-Objekt aus C++?
- 15. Wie erstelle ich Getters aus einer JSON-Datei in Pycharm
- 16. Simpy synchroner Kommunikationskanal
- 17. Wie erstelle ich einen bedingten Formularwert in einer Jade-Vorlage?
- 18. Wie erstelle ich einen NSManagedObjectContext
- 19. Wie erstelle ich ein Rad aus einer Django App?
- 20. Wie Sie einen Wert aus einer Liste
- 21. Wie wähle ich einen zufälligen Wert aus einer Aufzählung?
- 22. Wie gebe ich einen Wert aus einer Scala-Funktion zurück?
- 23. Wie definiere ich einen Array-Wert aus einer ganzen Zahl?
- 24. Wie erstelle ich einen paketgeschützten Konstruktor in Python?
- 25. Mit Tableau Entropie aus einer geschätzten Wahrscheinlichkeitsverteilung berechnen
- 26. Wie erstelle ich ein Bitset aus Binärzeichenfolge?
- 27. Wie erstelle ich einen String aus anderen Saiten in Ada?
- 28. Wie erstelle ich einen Textknoten mit lxml?
- 29. Wie erstelle ich einen Datensatz aus der assignes_to-Assoziation?
- 30. Wie erstelle ich einen ausgehenden Socket zu einer bestimmten Netzwerkschnittstelle?
Dies ist wahrscheinlich eine bessere Antwort als die akzeptierte für die meisten Anwendungsfälle. Es ist irgendwie ärgerlich, dass die API eine andere Reihenfolge als die NumPy hat! –