GELÖST random in C# nicht zufällig genug

Diskutiere random in C# nicht zufällig genug im Programmierung Forum im Bereich Programmierung; Ich programmiere gerade eine Funktion die mir mehrere 6 seitige Würfel simuliert, das Programm funktioniert, technisch gesehen. aber die...
#1
S

spacelord

Threadstarter
Dabei seit
26.06.2006
Beiträge
884
Alter
50
Ort
Fürth
Ich programmiere gerade eine Funktion die mir mehrere 6 seitige Würfel simuliert, das Programm funktioniert, technisch gesehen.
aber die ergebnisse sind unpraktisch :
bei 8 Würfel kriege ich zurück :

1,1,1,1,1,1,1,1 oder 1,1,1,1,2,2,2,2 oder 3,3,4,4,4,4,4,4 usw

von Zufall kann also nicht die Rede sein.
Wie kann ich den Code verbessern ?
Hier der Ausschnitt

for (int i = 0; i < NumbDice; i++)
{
// Hier die Generierung der Würfel
Random rnd = new Random();
dice = rnd.Next(1, 7);

textBox2.Text = textBox2.Text + Convert.ToString(dice) +(" ") ;

// Hier der Vergleich ob die Zahl 5 oder 6 ist ( der geht )
if (dice > 4)
{
success = success +1;
textBox1.Text = Convert.ToString(success);
}

}

:blink
 
#2
H

HWFlo

Dabei seit
04.09.2005
Beiträge
5.271
Alter
30
Versuchs mal mit der Methode unter Math.*
Bei deinem Weg müsste man glaube ich erst noch ne ordentliche Initialisierung machen.
 
#3
Schard

Schard

Dabei seit
13.04.2007
Beiträge
717
Ort
Hannover
Wahrscheinlich ist die FOR Schleife für den Random Algorithmus zu schnell.
Der geht ja bekanntlich nach der Systemzeit. Um das zu beheben könntest du iterativ oder rekursiv den letzten (vorherigen) Randomwert in die Berechnung des neuen Randomwertes einbeziehen, oder eine ganz neue Random Funktion schreiben.
Außerdem gibt
Code:
dice = rnd.Next(1, 7);
IMHO Die Zahlen 1-7 aus.

MfG,
Schard
 
#4
S

spacelord

Threadstarter
Dabei seit
26.06.2006
Beiträge
884
Alter
50
Ort
Fürth
der seed muss Ausserhalb statt finden :

Random rnd = new Random();
for (int i = 0; i < NumbDice; i++)
{
dice = rnd.Next(1, 7);
textBox2.Text = textBox2.Text + Convert.ToString(dice) +(" ") ;
if (dice > 4)
{
success = success +1;
textBox1.Text = Convert.ToString(success);
}


}


jetzt geht es besser.
 
#5
DiableNoir

DiableNoir

Dabei seit
18.01.2004
Beiträge
6.069
Ja, das ist natürlich der Fehler gewesen. ;)

Zufallsgeneratoren sind auch nur Algorithmen und können Zufall nur "simulieren". Das Problem dabei ist, dass man eigentlich immer die selben Muster erzeugt, was aber bei guten Algorithmen erst bei sehr vielen Zufallszahlen für Wiederholungen im Muster sorgt.

Der Grund warum die Klasse Random dir diese Werte erzeugt hat, ist dass ein Zufallsgenerator vor der Verwendung immer erst auf eine zufälligen Wert gesetzt werden muss. (Also ein Würfel der erst funktioniert, wenn du ihn mindestens schon einmal geworfen hast. :D)

Deshalb gibt es auch in anderen Sprachen eine Funktion die sich meist "Randomize" nennt. Die Random-Klasse macht das automatisch bei der Initialisierung. Allerdings führt die ständige Neuerzeugung des Zufallsgenerators zu extrem schlechten Ergebnissen, weil das Risiko extrem hoch ist, dass sehr die selben Zahlen erzeugt werden.


Nur so als Erklärung um zukünftige Fehler zu vermeiden und dieses Phänomen zu erklären. ;)
 
Thema:

random in C# nicht zufällig genug

random in C# nicht zufällig genug - Ähnliche Themen

  • Random Bluescreen

    Random Bluescreen: After letting my Laptop get repaired for a few weeks because of another bluescreen (livekernelevent), i started to use my Laptop again after it...
  • Getting BSODs since a month, completely random

    Getting BSODs since a month, completely random: Hey community, I hope you can help me. I keep getting different bluescreens since roughly a month or three weeks (Windows 10 64-bit). I already...
  • Windows 10 Random Disk Usage Spikes

    Windows 10 Random Disk Usage Spikes: Hey, now since 3 days my Disk Usage goes randomly from 0 to 100 and then 0 %, i already tried the tipps given from all other forums or website...
  • Viel zu lange Ladezeiten, Random Freezes und Abstürze

    Viel zu lange Ladezeiten, Random Freezes und Abstürze: Guten Tag, Allezusammen Ich war in den letzten 9 Monaten, in denen ich nun Windows 10 benutze eigentlich recht dem Program zugeneigt. Jedoch hat...
  • GELÖST Firefox freezed für einige Sekunden, random

    GELÖST Firefox freezed für einige Sekunden, random: Mein Firefox freezed für 5 bis 15 Sekunden, völlig zufällig, meistens bei Youtube, aber auch anderswo. Hab die neueste Version, hab schon...
  • Ähnliche Themen

    • Random Bluescreen

      Random Bluescreen: After letting my Laptop get repaired for a few weeks because of another bluescreen (livekernelevent), i started to use my Laptop again after it...
    • Getting BSODs since a month, completely random

      Getting BSODs since a month, completely random: Hey community, I hope you can help me. I keep getting different bluescreens since roughly a month or three weeks (Windows 10 64-bit). I already...
    • Windows 10 Random Disk Usage Spikes

      Windows 10 Random Disk Usage Spikes: Hey, now since 3 days my Disk Usage goes randomly from 0 to 100 and then 0 %, i already tried the tipps given from all other forums or website...
    • Viel zu lange Ladezeiten, Random Freezes und Abstürze

      Viel zu lange Ladezeiten, Random Freezes und Abstürze: Guten Tag, Allezusammen Ich war in den letzten 9 Monaten, in denen ich nun Windows 10 benutze eigentlich recht dem Program zugeneigt. Jedoch hat...
    • GELÖST Firefox freezed für einige Sekunden, random

      GELÖST Firefox freezed für einige Sekunden, random: Mein Firefox freezed für 5 bis 15 Sekunden, völlig zufällig, meistens bei Youtube, aber auch anderswo. Hab die neueste Version, hab schon...
    Oben