Wie andere bereits gesagt haben, sät new Random()
den Zufallsgenerator aus der aktuellen Systemzeit.
Ich habe einen Artikel , der das genauer beschreibt, einschließlich Lösungen für das Problem, die Sie vielleicht nützlich finden . Grundsätzlich möchten Sie die gleiche Instanz von Random
mehrmals verwenden - aber beachten Sie, dass es nicht threadsicher ist.
Der Typ Random
wird standardmäßig entsprechend der aktuellen Systemzeit mit endlicher Granularität gesetzt.
Wenn Sie new Random().Next(1, 6)
mehrmals in schneller Folge aufrufen, werden viele Random
-Objekte mit demselben Seed-Wert erstellt, was das gleiche Ergebnis ergibt. Der Thread.Sleep(1)
-Ruf "löst" dieses Problem, indem er einfach die Konstrukte zeitlich weiter auseinander hält, was die Wahrscheinlichkeit für unterschiedliche Startwerte erhöht.
Sie müssen ein bestimmtes Random
-Objekt von einem Aufruf zum nächsten beibehalten:
Weil es die Uhr als Startwert für das Generieren von Zahlen verwendet und wenn Sie auf diese Weise Zufallszahlen generieren, erhalten Sie die gleichen Zahlen
Wenn Sie das Zufallsmuster nicht erzeugen, erhalten Sie die gleiche Anzahl wie Random ist ein Pseudozufallsgenerator
Indem Sie Thread.Sleep (1) verwenden, erlauben Sie dem Timer, fortzuschreiten und einen neuen automatisch generierten Seed zu erzeugen.
Eine Möglichkeit zum "Reparieren" besteht darin, ein zufälliges Objekt zu erstellen und es wiederzuverwenden (wie einige andere auch beantwortet haben) oder einen anderen Zufallsgenerator zu verwenden.
Weitere Informationen finden Sie auf Ссылка
Jeder Zufallszahlengenerator, den Sie verwenden, ist eine Pseudozufallszahl. Dies hat immer einen vordefinierten Startwert und eignet sich gut zum Testen, aber nicht zum Implementieren von Features mit echter Zufälligkeit.
Sie sollten eine Quasi-Zufallszahlenfolge verwenden, um Zufallszahlen zu erzeugen, oder noch besser, Markovs-Kette, um die besten Zufallszahlen zu erzeugen. Wenn Sie vorhaben, eine dieser Random-Funktionen zu verwenden, werden Sie der echten Zufälligkeit nicht nahe kommen.