Zufallsgenerator wählt immer den gleichen Wert, wenn Sie laufen in einer Schleife
Das problem mit dem code ist, wenn ich versuche, zu erzeugen, eine Zahl, wenn der spin gleich 1 ist, erzeugt es die Werte in range (1,2,3), wenn wenn Sie versuchen, verwenden Sie die Schleife, um die Summe zufällige Werte im gleichen Bereich die Zufallszahl gerated ist immer die gleiche, während in der Schleife,
Beispiel, wenn ich die Schleife mit:
spind3 = 4 die Werte gehen von 4, 8, 12
spind3 = 5 die Werte gehen von 5, 10, 15
Das bedeutet, dass die erste Zeit die RandomNumber. einen Wert erzeugt im inneren Schleife, es ändert sich nie, bis die Schleife beendet ist.
if (toggled3.Checked)
{
if (spind3.Value != 1)
{
for (int i = 1; i <= spind3.Value; i++)
{
diceCalc[1] += RandomNumber(1, 4);
}
}
else
diceCalc[1] = RandomNumber(1, 4);
}
Wie implementiert ist
möglich, Duplikat der Warum wird es angezeigt, dass mein random number generator ist nicht random in C#?
xkcd.com/221
könnte es sein ... 😛
möglich, Duplikat der Random number generator wird nur die Erzeugung einer Zufallszahl
RandomNumber()
Methode ?möglich, Duplikat der Warum wird es angezeigt, dass mein random number generator ist nicht random in C#?
xkcd.com/221
könnte es sein ... 😛
möglich, Duplikat der Random number generator wird nur die Erzeugung einer Zufallszahl
InformationsquelleAutor Primordium | 2011-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie wahrscheinlich erstellen Sie eine neue
Random
Objekt inRandomNumber
Methode. Die default-Konstruktor fürRandom
verwendet die Systemzeit als seed. Wenn Sie mehrereRandom
Objekte in einer engen Schleife der Zeit vermutlich nicht geändert haben zwischen jedem Aufruf, so dass Sie alle initialisiert werden mit dem gleichen seed.Fix your code sollten Sie nur eine
Random
- Objekt und verwenden es.Aus der Dokumentation:
InformationsquelleAutor Mark Byers
Das problem ist, dass Sie die Erstellung von Zufallsgeneratoren zu schließen in der Zeit. Der Zufallsgenerator Konstruktor verwendet die aktuelle Zeit, um Samen der generator, die Sie erstellen, zu schließen, in der Zeit werden Sie alle ausgesät werden mithilfe der gleichen Zeit.
Erstellen eines random-Generators und die Verwendung in der Schleife:
InformationsquelleAutor Guffa
Müssen Sie zu initialisieren, Ihr Random-Objekt und rufen Sie dann Next() innerhalb der Schleife.
d.h.
InformationsquelleAutor Winger
Können Sie
Random(seed)
Konstruktor.InformationsquelleAutor Bayram Üçüncü
Ein trick ist, erstellen Sie manuell die Samen durch hinzufügen
DateTime.Now.Ticks
auf die variablei
:InformationsquelleAutor rad