Heim > Artikel > Backend-Entwicklung > Algorithmus zur Zufallsverteilung mit 10 Zahlen
10 Zahlen werden zufällig in 10 Positionen aufgeteilt. So schreiben Sie einen solchen Zufallsalgorithmus.
Meine Idee: Generieren Sie eine Zufallszahl und nehmen Sie dann 10 Positionen modulo 10 ein, um die Zufallszahl zu erhalten, aber es fühlt sich nicht zufällig genug an. Gibt es einen guten Algorithmus?
Zum Beispiel:
1 2 3 4 5 6 7 8 9 10
2 1 4 3 9 7 8 6 5 10
. . .
(zufällig angeordnet)
Ergänzung:
Geben Sie eine Methode an:
Lineare Tabelle mit 10 Zahlen, zufällig (10) = 5, löschen Sie Knoten 5.
Lineare Tabelle mit 9 Zahlen, zufällig (9) = 2, löschen Sie Knoten 2
. . . .
Letzte Zufallssequenz 5,2. . . . .
Das fühlt sich ziemlich zufällig an.
10 Zahlen werden zufällig in 10 Positionen aufgeteilt. So schreiben Sie einen solchen Zufallsalgorithmus.
Meine Idee: Generieren Sie eine Zufallszahl und nehmen Sie dann 10 Positionen modulo 10 ein, um die Zufallszahl zu erhalten, aber es fühlt sich nicht zufällig genug an. Gibt es einen guten Algorithmus?
Zum Beispiel:
1 2 3 4 5 6 7 8 9 10
2 1 4 3 9 7 8 6 5 10
. . .
(zufällig angeordnet)
Ergänzung:
Geben Sie eine Methode an:
Lineare Tabelle mit 10 Zahlen, zufällig (10) = 5, löschen Sie Knoten 5.
Lineare Tabelle mit 9 Zahlen, zufällig (9) = 2, löschen Sie Knoten 2
. . . .
Letzte Zufallssequenz 5,2. . . . .
Das fühlt sich ziemlich zufällig an.
Pseudocode:
<code>生成长度为10的数组a,压入1~10(或其他你想要的数) for (i = a.length - 1; i > 0; i--) { 生成一个0~i的随机数j(0 <= j < i) 交换a[i]和a[j] }</code>
Es gibt keine Möglichkeit für einen Computer, eine echte Zufallszahl zu generieren. Er kann nur versuchen, die generierten Zahlen gleichmäßig in verschiedenen Intervallen zu verteilen.
Es ist kein Problem mit dem Zufallsalgorithmus, es ist, dass die Stichprobe zu klein ist. Wenn Sie 100 Zufallszahlen ausprobieren, sieht es sehr zufällig aus
Wenn zufällig 1, 3, 2, 4, 5, 6, 7, 8, 10, 9 herauskommen, denkst du immer noch, dass es nicht zufällig genug ist
Sie möchten die zehn Zahlen 1-10 in zehn Positionen hashen. Hash es einfach.