Pseudo-Zufallszahlengeneratoren einmal ausgesät werden, wenn sie erstellt werden. Nachdem sie gesetzt wurden, folgen sie einem festen Zyklus durch die Zahlen (basierend auf ihrem Seed), um die nächste Zahl zu erzeugen.
Wenn Sie den Random
-Konstruktor ohne ein Argument verwenden, wird die aktuelle Zeit als Startwert verwendet. Bei allen folgenden Anrufen, bei denen eine Nummer tatsächlich generiert wird, wird die aktuelle Zeit nicht mehr verwendet. Es spielt also keine Rolle, wie lange Sie zwischen diesen Anrufen warten.
Das Problem, das Sie sehen, ist, dass jeder Spieler ein Random
eigenes Objekt hat und diese zur gleichen Zeit erstellt werden. Siehe das folgende Beispiel:
// these are created pretty much at the same time
var r1 = new Random();
var r2 = new Random();
Console.WriteLine(r1.Next(1, 7));
Console.WriteLine(r2.Next(1, 7));
Console.WriteLine(r1.Next(1, 7));
Console.WriteLine(r2.Next(1, 7));
Console.WriteLine(r1.Next(1, 7));
Console.WriteLine(r2.Next(1, 7));
Console.WriteLine(r1.Next(1, 7));
Console.WriteLine(r2.Next(1, 7));
Wenn Sie diesen Code ausführen, werden Sie sehen, dass die Zahlen aus den beiden Zufallsgeneratoren sind immer gleich. Dies liegt daran, dass sie mit der gleichen Zeit ausgesät werden.
Um dies zu beheben, müssten Sie diese Generatoren anders seeden oder sicherstellen, dass eine tatsächlich erstellt wird nach die andere.
Eine viel bessere Lösung wäre jedoch, ein einzelnes Objekt einzuführen, das für das Erstellen zufälliger Würfelwürfe verantwortlich ist. Ihre Player
Objekte würden dann den gleichen Dies-Generator verwenden, der nur einen einzigen Zufallszahlengenerator hat. Die Zufallszahlen würden also vom selben Generator kommen und verhindern, dass sie identisch sind. Etwas wie folgt aus:
public class DieGenerator
{
private Random rand = new Random();
public int Roll()
{
return rand.Next(1, 7);
}
}
Sie würden dann eine Aufgabe dieser erstellen und übergeben sie an die Player
so können sie es verwenden, um die Würfel anstatt sich auf ihre eigenen Zufallszahlengenerator zu rollen.
Sie möchten 'Würfel' statisch machen. Ich nehme an, du hast 'player1' und' player2' in schneller Folge erstellt und sie haben den gleichen Samen. – juharr