Heim >Backend-Entwicklung >Python-Tutorial >Wie generiert man Zufallszahlen, die mit gleicher Wahrscheinlichkeit einen vordefinierten Wert ergeben?
Generieren von Zufallszahlen, die zu einem vordefinierten Wert summiert werden
In diesem Zusammenhang wollen wir eine Liste von Pseudozufallszahlen erstellen, die sich kollektiv addieren bis zu einem bestimmten vorgegebenen Wert. Eine Methode besteht darin, eine Zahl innerhalb eines bestimmten Bereichs zufällig zu generieren, sie von der Gesamtsumme zu subtrahieren und diesen Vorgang zu wiederholen, bis die Summe dem gewünschten Wert entspricht. Allerdings begünstigt dieser Ansatz die zuerst generierte Zahl hinsichtlich ihres Beitrags zur Summe.
Um Einheitlichkeit zu gewährleisten, wurde eine ausgefeiltere Lösung entwickelt:
<code class="python">import random def constrained_sum_sample_pos(n, total): """Return a randomly chosen list of n positive integers summing to total. Each such list is equally likely to occur.""" dividers = sorted(random.sample(range(1, total), n - 1)) return [a - b for a, b in zip(dividers + [total], [0] + dividers)]</code>
Diese Methode generiert eine Liste positiver Ganzzahlen, deren Summe den Zielwert ergibt. Das Schlüsselkonzept besteht darin, dass jede mögliche Zahlenkombination mit gleicher Wahrscheinlichkeit generiert wird. Darüber hinaus ist die Ausweitung dieser Technik auf verschiedene Summen und eine unterschiedliche Anzahl von Zufallszahlen unkompliziert.
Wenn wir beispielsweise n auf 4 und die Summe auf 40 setzen, erhalten wir möglicherweise die folgende Ausgabe: [4, 4, 25 , 7]. Es ist wichtig zu beachten, dass jedes Element dieser Liste, wenn es summiert wird, den vordefinierten Wert 40 ergibt.
Um nicht positive ganze Zahlen zu berücksichtigen, ist eine Modifikation verfügbar:
<code class="python">def constrained_sum_sample_nonneg(n, total): """Return a randomly chosen list of n nonnegative integers summing to total. Each such list is equally likely to occur.""" return [x - 1 for x in constrained_sum_sample_pos(n, total + n)]</code>
By Indem wir jeden Wert um eins erhöhen, können wir eine Liste nicht negativer Ganzzahlen erstellen, die sich zur gewünschten Summe addieren.
Diese Methode stellt sicher, dass jede mögliche Kombination, unabhängig davon, ob die Zahlen positiv oder nicht negativ sind, hat die gleiche Wahrscheinlichkeit, erzeugt zu werden. Aufgrund ihrer benutzerfreundlichen Implementierung und Vielseitigkeit in verschiedenen Szenarien sind constrained_sum_sample_pos und constrained_sum_sample_nonneg zu einem integralen Bestandteil von Aufgaben zur Zufallszahlengenerierung in Python geworden.
Das obige ist der detaillierte Inhalt vonWie generiert man Zufallszahlen, die mit gleicher Wahrscheinlichkeit einen vordefinierten Wert ergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!