Heim  >  Artikel  >  Backend-Entwicklung  >  Algorithmus zur Zufallsverteilung mit 10 Zahlen

Algorithmus zur Zufallsverteilung mit 10 Zahlen

WBOY
WBOYOriginal
2016-09-21 14:13:132230Durchsuche

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.

Antwortinhalt:

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.

Stellungnahme:
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