Ich möchte 4 zufällige ganze Zahlen im Bereich [1,4]
in einer einheitlichen Verteilung generieren. Zum Beispiel erscheint jede Nummer dreimal für eine Folge von 12 Elementen.Wie erzeuge ich eine Folge von ganzen Zahlen in einer gleichmäßigen Verteilung?
0
A
Antwort
1
verwenden, können Sie einen Generator verwenden:
from random import randint
def getNum1To4(runs):
occurences = {n+1:0 for n in range(4)}
for i in range(runs):
options = [n for n in occurences if occurences[n] < runs/4]
choice = options[randint(0, len(options) - 1)]
occurences[choice] += 1
yield choice
Ausgänge:
>>> runs = 8
>>> gen = getNum1To4(8)
>>> for n in range(runs): print gen.next()
2
1
3
1
3
4
4
2
0
Sie können Listen für diese Aufgabe verwenden, um sicherzustellen, dass Ihr Pool verfügbarer Nummern keine Duplikate enthält. Ich bin nicht sicher, ob Sie sie in Satzblöcken innerhalb der Liste von 12 oder ob Sie es vollständig randomisiert möchten. Wenn Ersteres, entferne den letzten Shuffle.
from random import shuffle
choice_pool = [x for x in range(1, 5)]
random_output = []
number_of_runs = 4
for x in range(number_of_runs):
shuffle(choice_pool)
random_output += choice_pool
shuffle(random_output)
print random_output
0
sollte dieser Ansatz funktionieren:
import random
foo = [i for i in range(1, 5)] * 4
print random.sample(foo, len(foo))
Ausgang: [2, 2, 3, 1, 4, 4, 3, 4, 1, 1, 3, 2, 1, 4, 3, 2]
0
Dies könnte Ihnen helfen -
import random
def foo(number_of_runs, lower_limit, upper_limit):
turns = number_of_runs // (upper_limit - lower_limit + 1)
arr = list(range(lower_limit, upper_limit + 1)) * turns
random.shuffle(arr)
return arr
print(foo(12, 1, 4))
0
Try this,
import random
x = [i for i in range(1, 5)] * 3
random.shuffle(x) # shuffle the sequence x in place
# Output
[4, 3, 1, 3, 2, 2, 3, 4, 4, 1, 2, 1]
Wenn die Elemente float oder double sind, wäre die Antwort viel einfacher durch numpy.random.uniform
import numpy as np
x = np.random.uniform(1, 5, 12)
# Output
array([ 4.18515267, 4.87403138, 3.43580119, 2.62828693, 3.77675348,
4.15627119, 4.02190688, 3.56667674, 1.31115154, 1.74971624,
3.20515834, 1.75240044])
Verwandte Themen
- 1. "Pythonic" -Methode, um eine Folge von durch Komma getrennten ganzen Zahlen in eine Liste von ganzen Zahlen zu analysieren?
- 2. Wie erzeuge ich diskrete zufällige Ereignisse mit einer Poisson-Verteilung?
- 3. Looping eine Folge von Zahlen
- 4. Wie erstellt man ein Array mit einer Folge von ganzen Zahlen in C#?
- 5. Größte in einer Matrix von ganzen Zahlen
- 6. Konvertieren einer Zahl in eine Liste von ganzen Zahlen
- 7. Arrays von ganzen Zahlen
- 8. Verketten von ganzen Zahlen
- 9. Wie validiere ich ein Array von ganzen Zahlen in Laravel
- 10. Python Join eine Liste von ganzen Zahlen
- 11. Finden Sie die erste Folge von Zahlen in einer Zeichenfolge?
- 12. Wie fmt.Scanln() lesen in eine Scheibe von ganzen Zahlen
- 13. separiert Liste von ganzen Zahlen
- 14. Faktorisieren einer Ganzzahl in einer Liste von ganzen Zahlen
- 15. 3 Threads Drucken von Zahlen in Folge
- 16. Wie kann ich eine Sequenz von Zahlen in Elixir erzeugen?
- 17. Array von Zahlen zu ganzen Zahlen
- 18. Eine Folge von Zahlen in einem Array finden
- 19. Robust Parsing von ganzen Zahlen in C++
- 20. Wie erzeuge ich Stereobilder von einer Monokamera?
- 21. Speichern von ganzen Zahlen in Android
- 22. Konvertieren Sätze von ganzen Zahlen in Bereiche
- 23. Wie erstellt man eine Häufigkeitstabelle (Array von ganzen Zahlen)
- 24. eine Folge von Generatoren
- 25. Wie initialisiert man eine Struktur von ganzen Zahlen auf Null?
- 26. Wie Scanf zwei ganzen Zahlen in c
- 27. konvertieren String in Array von ganzen Zahlen
- 28. Encode/komprimieren Folge von sich wiederholenden Zahlen
- 29. Excel: Manipulation über sortierten Folge von Zahlen
- 30. Dreidimensionale Arrays von ganzen Zahlen in C++
Das wäre nicht zufällig:/ – linusg
Wie definieren Sie "erscheinen eq urally "? Meinst du [einheitliche Verteilung] (https://en.wikipedia.org/wiki/Uniform_distribution_%28discrete%29)? – gdlmx
@linusg das Problem ist wahrscheinlich, dass sie eine Sequenz beliebiger Länge erzeugen wollen, die Elemente in zufälliger Reihenfolge hat, in der jedes Element gleich wahrscheinlich erscheint. Ich habe etwas Ähnliches im A/B-Test verwendet: Ich brauchte einen festen Prozentsatz von Leuten während des gesamten Tests, um SMS A zu erhalten, aber der Gesamtpool der Testpersonen war variabel. Sie können meine Antwort für ein Beispiel sehen. Die Auswahl von SMS für eine Person wurde randomisiert. – roganjosh