Heim >Backend-Entwicklung >Python-Tutorial >Wie generiert man in Python Zufallszahlen, deren Summe einen bestimmten Wert ergibt?
Generieren von Zufallszahlen, die in Python einen vordefinierten Wert ergeben
Die Herausforderung besteht darin, eine Reihe von Pseudozufallszahlen zu generieren, die sich kollektiv summieren bis zu einem bestimmten Wert. Konkret möchte der Benutzer vier Zahlen generieren, die zusammen 40 ergeben.
Standardlösung
Die Standardlösung ist sowohl einheitlich als auch an unterschiedliche Zielsummen anpassbar. Es verwendet Zufallsstichproben, um eine Folge von Ganzzahlen auszuwählen, die die angegebenen Einschränkungen erfüllen:
<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>
Nichtnegative Ganzzahllösung
Für Situationen, in denen nichtnegative Ganzzahlen bevorzugt werden, eine einfache Die Transformation kann auf die Standardlösung angewendet werden:
<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>
Grafische Erläuterung
Um den Generierungsprozess zu veranschaulichen, betrachten Sie das Beispiel des Erhaltens von vier positiven ganzen Zahlen, die mit 10 summiert werden constrained_sum_sample_pos(4, 10).
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
Fazit
Die Standardlösung bietet einen zuverlässigen und einheitlichen Ansatz zur Generierung von Zufallszahlen mit einer vordefinierten Summe. Es kann für verschiedene Summenwerte angepasst und erweitert werden, um nichtnegative ganze Zahlen zu verarbeiten.
Das obige ist der detaillierte Inhalt vonWie generiert man in Python Zufallszahlen, deren Summe einen bestimmten Wert ergibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!