Laden...

Random, gleicher Wert

Erstellt von computer_case vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.461 Views
C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren
Random, gleicher Wert

also:

  int zahl1;
            Random zufall = new Random();
            zahl1 = zufall.Next(1, 11);

            int zahl2;
            Random zufall2 = new Random();
            zahl2 = zufall2.Next(1,11);
            label1.Text = (" " + zahl1);
            label2.Text = (" " + zahl2);

bei folgendem code erhalten zahl1 und zahl2 immer den gleichen wert.
Ich kann mir nur nicht erklären wieso.

gruss computer_case

871 Beiträge seit 2005
vor 15 Jahren

Hallo,

erstelle nur ein Random Objekt und hole dir aus diesem die Zufallszahlen raus. Das Problem ist, dass der Zufallszahlengenerator mit einem Seed gefüttert werden muss damit er anschließend zufällige Zahlen ausspuckt (geschieht automatisch beim instanzieren des Objekts).

Ich weiss jetzt nicht genau mittels welchen Werts Random initialisiert wird, ich denk aber dass es irgendwelche Zeiten sind (z.b. Aktuelle Zeit im MS Takt, etc). Wenn Du also zwei Random Objekte zu schnell hintereinander erstellst, liefern die die gleichen Werte.

Grüsse,
Egon

/edit:

The random number generation starts from a seed value. If the same seed is used repeatedly, the same series of numbers is generated. One way to produce different sequences is to make the seed value time-dependent, thereby producing a different series with each new instance of Random. By default, the parameterless constructor of the Random class uses the system clock to generate its seed value, while its parameterized constructor can take an Int32 value based on the number of ticks in the current time.

C
computer_case Themenstarter:in
51 Beiträge seit 2007
vor 15 Jahren

ok, vielen dank. hab es jetzt einfach so gemacht, dass die zufallszahlen nicht zur gleichen zeit generiert werden.

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo computer_case,

mach es besser so, dass du nur ein Random-Objekt erzeugst.

herbivore

3.971 Beiträge seit 2006
vor 15 Jahren

Um "sichere" Zufallszahlen zu erhalten, kannst du auch RNGCryptoServiceProvider-Klasse verwenden.

Es gibt 3 Arten von Menschen, die die bis 3 zählen können und die, die es nicht können...