Java-Zufallszahlen mit einem Seed
Dies ist mein code zum generieren von Zufallszahlen mit einem seed als argument:
double randomGenerator(long seed) {
Random generator = new Random(seed);
double num = generator.nextDouble() * (0.5);
return num;
}
Jedes mal, wenn ich einen Samen und versuchen, generieren 100 zahlen, Sie alle sind die gleichen.
Wie kann ich dieses Problem beheben?
Kommentar zu dem Problem
Das ist das, was ein samenkorn ist tun soll. Sie generieren nur eine Zahl für einen Samen. Was wollen Sie erreichen?
möglich, Duplikat der Java random gibt immer die gleiche Anzahl, wenn ich die Samen?
Sie können mit
System.currentTimeMillis()
als Saatgut zu produzieren zufällige Ergebnisse. Geben nicht jeder Samen produziert zufällige Ergebnisse. Ich bin mir nicht sicher, ob es beginnen würde, zu wiederholen, irgendwann, wenn Sie keine Samen. InformationsquelleAutor der Frage Rahul Bhatia | 2012-09-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie geben den gleichen Samen, das ist normal. Das ist eine wichtige Funktion, die erlaubt tests.
Überprüfen Sie, dies zu verstehen, pseudo-random generation und Samen:
Pseudo-zufälligen Nummern-generator
Wenn Sie wollen, um verschiedene Sequenzen (der Normalfall, wenn keine tuning-oder debugging-Algorithmus), sollten Sie rufen die null-argument-Konstruktor verwendet nanoTime, um zu versuchen, um eine andere Saat zu jeder Zeit. Diese
Random
Instanz sollte natürlich gehalten werden, die außerhalb der Methode.Ihr code sollte wohl so sein:
InformationsquelleAutor der Antwort Denys Séguret
Der einfache Weg ist zu verwenden:
Dies ist der beste Weg zu generieren
Random
zahlen.InformationsquelleAutor der Antwort Pollar
Sollten Sie nicht erstellen Sie einen neuen, Zufällig im Gültigkeitsbereich der Methode. Machen Sie es eine Klasse Mitglied:
Dies ist nur ein Beispiel. Ich glaube nicht, dass das einwickeln
Random
diese Weise fügt einen beliebigen Wert. Legen Sie es in einer Klasse von dir, es zu benutzen.InformationsquelleAutor der Antwort duffymo
Das ist das Prinzip einer Pseudo-RNG. Die zahlen sind nicht wirklich zufällig. Sie werden generiert mit Hilfe eines deterministischen Algorithmus, aber je nach den Samen, die Sequenz der generierten zahlen variieren. Da Sie immer den gleichen seed, bekommt man immer die gleiche Reihenfolge.
InformationsquelleAutor der Antwort JB Nizet
Problem ist, dass Sie Samen den Zufallsgenerator wieder. Jedes mal, wenn Sie Saatgut der anfängliche Zustand des Zufallszahlengenerators wird zurückgesetzt, und der ersten Zufallszahlen, die Sie generieren, wird die erste Zufallszahl, die nach der Anfangszustand
InformationsquelleAutor der Antwort Minion91
Wenn Sie wollen, um zu generieren, die mehrere Nummern mit einem Samen, die Sie tun können, so etwas wie dieses:
Zeigt es die gleiche Liste, wenn Sie die gleichen Samen.
InformationsquelleAutor der Antwort user5479540
Mehrere der hier aufgeführten Beispiele erstellen Sie eine neue
Random
Instanz, aber das ist unnötig. Es gibt auch keinen Grund für die Verwendungsynchronized
als eine Lösung hat. Nutzen Sie stattdessen die Methoden derThreadLocalRandom
Klasse:InformationsquelleAutor der Antwort Finn Voichick