Java Zufallszahlen nicht zufällig?

7

Ich habe versucht, den Zufallszahlengenerator in Java einem Freund zu erklären, wenn er jedes Mal, wenn er das Programm ausführt, dieselben Zahlen erhält. Ich habe meine eigene einfachere Version der gleichen Sache erstellt, und ich bekomme auch die gleichen genauen Zahlen, die er jedes Mal erhielt, wenn ich das Programm ausführte.

Was mache ich falsch?

%Vor%

Die letzten fünf Zahlen von 100 sind:

%Vor%     
leigero 29.04.2013, 23:44
quelle

4 Antworten

23

Sie haben den Zufallsgenerator mit einem konstanten Wert 100 gesetzt. Es ist deterministisch, so dass bei jedem Lauf die gleichen Werte erzeugt werden.

Ich bin mir nicht sicher, warum Sie es mit 100 versehen haben, aber der Startwert hat nichts mit dem Wertebereich zu tun, der generiert wird (der auf andere Weise gesteuert wird, wie der Aufruf von nextInt das hast du schon).

Um verschiedene Werte zu erhalten, verwenden Sie die Random -Konstruktor ohne Argumente, der die Systemzeit verwendet, um den Zufallsgenerator zu erzeugen.

Zitat aus dem Javadoc für den parameterlosen Random -Konstruktor:

  

Erzeugt einen neuen Zufallszahlengenerator. Dieser Konstruktor legt den Seed fest   des Zufallszahlengenerators auf einen sehr wahrscheinlich unterscheidbaren Wert   von irgendeinem anderen Aufruf dieses Konstruktors.

Zitieren des tatsächlichen Codes im parameterlosen Random -Konstruktor:

%Vor%     
rgettman 29.04.2013, 23:45
quelle
2

Dies:

%Vor%

Sie geben dem Zufallsgenerator bei jedem Start des Programms den gleichen Startwert (100). Geben Sie ihm etwas wie die Ausgabe von System.currentTimeMillis() , und das sollte Ihnen für jeden Aufruf unterschiedliche Zahlen geben.

    
Marvo 29.04.2013 23:46
quelle
1

Zufallszahlengeneratoren sind wirklich nur pseudozufällig. Das heißt, sie verwenden deterministische Mittel, um Sequenzen zu erzeugen, die bei bestimmten statistischen Kriterien zufällig erscheinen.

Mit dem Random(long seed) constuctor können Sie einen Seed übergeben, der die Reihenfolge der Pseudozufallszahlen bestimmt.

    
Willie Wheeler 29.04.2013 23:47
quelle
0

Hoffe das hilft ..

%Vor%     
user3503711 19.07.2014 17:29
quelle

Tags und Links