Zufallszahlengeneratoren sind pseudozufällig. Das bedeutet, dass sie einen "Algorithmus" verwenden, um die nächste "zufällige" Zahl zu erstellen. Mit anderen Worten, wenn Sie mit dem gleichen Startwert für diesen Algorithmus beginnen, erhalten Sie jedes Mal dieselbe Sequenz von Zufallszahlen. Um dies zu lösen, müssen Sie sicherstellen, dass Sie Ihren Zufallsgenerator erzeugen. Manchmal ist es wünschenswert, den gleichen Seed zu verwenden, damit Sie ableiten können, ob die Logik Ihres Programms korrekt funktioniert. So oder so, eine gemeinsame Methode, die Leute ihre Programme säen, ist durch die Verwendung von Zeit (NULL). Zeit gibt die verstrichene Zeit (in Sekunden) seit der Epoche an. Das bedeutet, dass sich diese Funktion jede Sekunde ändert. Wenn Sie also Ihren Zufallsgenerator mit (srand (time (NULL)) am Anfang des Programms einsetzen, erhalten Sie für jede Sekunde, in der Sie Ihr Programm ausführen, eine andere Zufallszahlenfolge Zufallszahl, die Sie anfordern. Tun Sie das einfach einmal ganz am Anfang Ihres Codes und lassen Sie es dann in Ruhe.
Ihr Titel sagt C#, aber ich habe mit C++ geantwortet. Sie sollten ctime für diese einschließen Es mag auch nützlich sein, den neuen Stil der Zufallszahlengenerierung zu betrachten, da rand() in diesen Tagen nicht sehr zufällig ist. Schauen Sie in #include random und machen Sie sich eine Engine und eine Distribution, um Zufallszahlen durchzuspielen auch dort!
Soll das C++ Code oder C# sein? Es scheint, Sie schreiben C++ - Code und Sie haben es als C++ markiert, aber der Titel und die Frage sagen C#. –
Überprüfen Sie dies: http://stackoverflow.com/questions/1716308/how-does-a-random-number-generator-work –
[Verwenden Sie nicht 'rand()'] (https: //channel9.msdn. com/Events/GoingNative/2013/Rand-Considered-Harmful) – ArchbishopOfBanterbury