Zufallszahlen zu generieren, die einen vorgegebenen Wert ergeben, stellt eine interessante Herausforderung dar in der Computerprogrammierung. Obwohl einfache Ansätze ausreichend erscheinen mögen, führen sie oft zu Verzerrungen, da bestimmte Zahlen eine höhere Wahrscheinlichkeit haben, ausgewählt zu werden. Dieser Artikel befasst sich mit einer verfeinerten Lösung, die eine gleiche Wahrscheinlichkeitsverteilung für alle möglichen Kombinationen gewährleistet.
Die bereitgestellte Lösung basiert auf der Funktion „constrained_sum_sample_pos“, um eine gleichmäßige Verteilung möglicher Ergebnisse zu erreichen. Diese Funktion generiert eine Liste positiver Ganzzahlen (n), deren Summe den Zielwert (Gesamtwert) ergibt. Ihr Hauptmerkmal ist, dass jede Kombination die gleiche Chance hat, ausgewählt zu werden.
Die Stärke der Funktion liegt in ihrer mathematischen Grundlage, die garantiert, dass alle möglichen Kombinationen gleich wahrscheinlich sind. Darüber hinaus lässt es sich leicht an andere Szenarien anpassen, z. B. die Generierung von sieben Zahlen, die 100 oder eine andere gewünschte Summe ergeben.
Die Python-Implementierung der Funktion wird unten bereitgestellt:
<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>
Die grafische Darstellung von @FM vermittelt ein klares Verständnis der Funktionsweise der Funktion:
0 1 2 3 4 5 6 7 8 9 10 # The universe. | | # Place fixed dividers at 0, 10. | | | | | # Add 4 - 1 randomly chosen dividers in [1, 9] a b c d # Compute the 4 differences: 2 3 4 1
Diese ausgefeilte Lösung basiert auf Die eingeschränkte Summenstichprobe bietet eine robuste und unvoreingenommene Methode zum Generieren von Zufallszahlen, deren Summe einen vordefinierten Wert ergibt. Es gewährleistet die gleiche Wahrscheinlichkeit für alle möglichen Ergebnisse und ist somit ein zuverlässiges Werkzeug für verschiedene Programmierszenarien.
Das obige ist der detaillierte Inhalt vonWie generiert man Zufallszahlen mit einer vordefinierten Summe und stellt eine gleiche Wahrscheinlichkeitsverteilung sicher?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!