Zufallszahl ändert sich nicht, trotz mehrerer Loop-Durchläufe



  • Hallo,

    Ich versuche ein Programm zu schreiben, welches zufällige Begriffe miteinander kombiniert und ausgibt. Wie unten im Code zu sehen habe ich die Erstellung einer Zufallszahl in die Loop integriert, habe beim Testen jedoch folgende Probleme:

    - Trotz mehrerer Durchläufe der Schleife bleibt die Zufallszahl jeweils gleich (bzw. es kommt immer wieder die selbe Kombination an Begriffen). Ich muss das Programm neu starten, damit eine neue Kombination erzeugt wird.
    - Wenn zwei Arrays die selbe Länge haben, wählt das Programm für beide die selbe Zufallszahl.

    Vielen Dank für jede Hilfe!

    Der Code hierzu:

    string[] jn1 = { "a1", "b1", "c1", "d1", "e1", "f1" };
                string[] jn2 = { "a2", "b2", "c2" };
                string[] jn3 = { "a3", "b3", "c3", "c4" };
    
                int anzahljns1 = jn1.Length;
                int anzahljns2 = jn2.Length;
                int anzahljns3 = jn3.Length;
    
                do
                {
                    Random zufallszahl1 = new Random(0);
                    Random zufallszahl2 = new Random(0);
                    Random zufallszahl3 = new Random(0);
    
                    int jpo1 = zufallszahl1.Next(0, anzahljns1);
                    int jpo2 = zufallszahl2.Next(0, anzahljns2);
                    int jpo3 = zufallszahl3.Next(0, anzahljns3);
    
                    string first = jn1[jpo1];
                    string second = jn2[jpo2];
                    string third = jn3[jpo3];
    
                    Console.WriteLine(first + " "+ second + " " + third);
    
                    Console.WriteLine("...");
                    repeat = Console.ReadLine();
    
                } while (repeat == "y");
    


  • (Mindestens) Zwei Fehler:
    1. Die Initialisierung darfst du nur einmalig außerhalb der Schleife vornehmen
    2. Den Seedwert bei der Initialisierung solltest du weglassen (d.h. den Parameter 0), da du sonst bei jedem Programmstart immer wieder die selbe Zufallsfolge erhältst.

    Außerdem reicht es, wenn du genau eine Random-Variable erstellt:

    Random random = new Random(); // <- ohne Parameter wird die aktuelle Datum/Uhrzeit als Seedwert genommen
    

Log in to reply