Wiederholung bei Zufallszahlen

stillalive

Grünschnabel
Hi!

Mein Problem ist folgendes:
Code:
class dice
	{
		public double roll()
		{
			Random random = new Random();
			return random.Next(1,6);
		}
	}
Wenn ich diesen Würfel instanziere und dann die Methode roll() 10mal ausführe bekomme ich immer die selbe Zufallszahl zurück.
Ich hoffe ihr könnt mir helfen!

Danke im Vorraus!

Grüße stillalive ;-)
 
Du musst deinem Random einen Seed (Startwert) geben, mit dem er die Generation von Zaheln beginnt. Dazu eignet sich z.B. folgende Zeile:
Code:
    Random rand = new Random( (int)DateTime.Now.Ticks );
Es wäre auch gut, so ein Randomobjekt oder in deinem fall zur Membervariablen zu machen, die bei Erzeugung des Dice-Objektes initialisiert wird und weiterzuverwenden, anstatt lokale neue zu erzeugen. Sonst bekommst du nämlich immer die selben Zahlenfolgen, wenn die Objekte in der gleichen Millisekunde erzeugt werden.

Zusätzlicher Vorteil ist übrigens, dass es dadurch auch relativ einfach wird, z.B. zu Testzwecken dein Randomobjekt mit immer demselben Startwert zu füttern, um Zahlenfolgen zu reproduzieren.
 
Zuletzt bearbeitet:
Danke für den Tipp! Hab es so gelöst:
Code:
class dice
	{
		static Random rand = new Random((int)DateTime.Now.Ticks);
		public double roll()
		{
			return rand.Next(1,6);
		}
	}

Außer es gibt noch eine Verbesserungsvorschlag!

Grüße stillalive ;-)
 

Neue Beiträge

Zurück