2015-07-01 10 views
5

Also hier ist der Code, den ich benutzt habe. Es ist nur ein einfaches Programm zu testen, ob 3 zufällig generierte Zahlen in aufsteigender oder absteigender Reihenfolge sind. Aus irgendeinem Grund, wenn ich den Debugger benutze und in jede Zeile gehe, funktioniert der Code richtig. Wenn nicht, dann sagt es, dass die Zahlen in der Reihenfolge 100% oder außer Betrieb 100% sind, was nicht der Fall sein sollte. HierC# -Code funktioniert nur bei Verwendung des Debuggers?

ist der Code Ich habe mit:

 int num1; 
     int num2; 
     int num3; 

     int yes = 0; 
     int no = 0; 

     for (int i = 0; i <= 99; i++) 
     { 

      Random rnd = new Random(); 

      num1 = rnd.Next(1, 11); 
      num2 = rnd.Next(1, 11); 
      num3 = rnd.Next(1, 11); 

      if (((num1 <= num2) && (num2 <= num3)) || ((num1 >= num2) && (num2 >= num3))) 
      { 
       yes += 1; 
      } 

      else 
      { 
       no += 1; 
      } 

     } 


     Console.WriteLine("The Number are in ascending order " + yes.ToString() + " Times"); 
     Console.WriteLine("The Number are not in ascending order " + no.ToString() + " Times"); 

     Console.ReadLine(); 

Ich denke, es könnte ein Problem mit der Pseudo-Zufall und dem Code sein, die gleichen 3 Zahlen jedes Mal zu erzeugen, aber ich bin immer noch lernen mehr über Programmierung und andere Hilfe würde sehr geschätzt werden.

Antwort

8

Der new Random() Konstruktor verwendet die aktuelle Zeit als Seed. Wenn Sie nicht im Debugger warten, haben alle Ihre Random Instanzen den gleichen Startwert.

Sie sollten eine einzelne Instanz verwenden.

5

Dies hat damit zu tun, wie die Zufallszahlen generiert werden.

Wenn Sie

nehmen
Random rnd = new Random(); 

und es aus der Schleife bewegen, sollten Sie die gewünschten Ergebnisse sehen.

Mehr Hintergrund:

Der Zufallszahlengenerator verwendet einen Samen basiert Sie auf die Zeit, die instanziiert. Da der Code so schnell ausgeführt wird, ist der Seed identisch, sodass die Zahlen identisch sind. Deshalb funktioniert es, wenn Sie durchgehen.

Instantiierung des Random außerhalb der Schleife wird es instanziieren und den Zufallsalgorithmus verwenden, um neue Zahlen zu generieren.

Verwandte Themen