Wie generiert man in Python Zufallszahlen, deren Summe einen bestimmten Wert ergibt?

Patricia Arquette
Freigeben: 2024-10-27 20:47:30
Original
272 Leute haben es durchsucht

How to Generate Random Numbers that Sum to a Specific Value in Python?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!