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

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

spacelord

Threadstarter
Mitglied seit
26.06.2006
Beiträge
887
Alter
52
Standort
Nürnberg
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
 
H

HWFlo

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

Schard

Mitglied seit
13.04.2007
Beiträge
720
Standort
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
 
spacelord

spacelord

Threadstarter
Mitglied seit
26.06.2006
Beiträge
887
Alter
52
Standort
Nürnberg
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.
 
DiableNoir

DiableNoir

Mitglied 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

  • Windows stürtzt Random ab.

    Windows stürtzt Random ab.: Liebe Community, Unter last und gelegentlich auch im Idle kommt es öfter vor, dass mein PC ohne Fehlermeldung und ohne Bugcodes im Protokoll...
  • random direction scrolling when turning mouse wheel

    random direction scrolling when turning mouse wheel: As it states above when i try to use my mouse wheel to scroll it just randomly scrolls in the opposite direction in between and its infuriating...
  • 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...
  • 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

    • Windows stürtzt Random ab.

      Windows stürtzt Random ab.: Liebe Community, Unter last und gelegentlich auch im Idle kommt es öfter vor, dass mein PC ohne Fehlermeldung und ohne Bugcodes im Protokoll...
    • random direction scrolling when turning mouse wheel

      random direction scrolling when turning mouse wheel: As it states above when i try to use my mouse wheel to scroll it just randomly scrolls in the opposite direction in between and its infuriating...
    • 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...
    • 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