Ich muss ein Java-System verteilen, das Pseudozufalls verwendet. Jeder Knoten des Systems muss eine bestimmte Anzahl von Randoms verarbeiten.Ist es möglich, ein Pseudozufall zu teilen
Die Ergebnisse müssen reproduzierbar sein, also müssen die Randoms von einem Seed als Parameter abhängen.
Random random = new Random(long seed);
Wenn beispielsweise I 100 randoms verarbeiten müssen und ich habe 2 Knoten, muss der erste Knoten 1-50 verarbeiten und der zweite von 51 bis 100.
Das Problem ist, dass pseudorandoms brauchen um über sich selbst zu iterieren, um immer die gleiche Sequenz von Randoms zu erzeugen (für den gleichen Samen).
In dem vorherigen Beispiel gibt es eine Möglichkeit, die Generierung von Randoms im zweiten Knoten aus dem 51. Zufall zu starten? (So vermeiden Sie die Notwendigkeit, Randoms von 1 bis 50 in diesem Knoten zu generieren und zu löschen).
Nicht besonders. Sie wären besser dran, ein anderes Schema herauszufinden, wie die Zufallszahlen zwischen den Knoten aufgeteilt werden, z. Zwei Knoten würden jede andere Zufallszahl als die ersten 50 und die letzten 50 verwenden. Brauchen Sie, dass sie reproduzierbar ist, selbst wenn Sie die Anzahl der Knoten ändern? Wenn nicht, könnte das die Sache viel einfacher machen, indem man andere "Random" -Instanzen mit vom ersten "Random" erzeugten Seeds tastet. –
Hmm ... das würde mein Problem nicht lösen, da jeder Knoten sowieso zum 100sten Random verarbeitet werden müsste. –
Verwenden Sie keine Pseudozufallsfolgen, sondern eine Hash-Funktion. Der erste Knoten verarbeitet die Hashes von 1..50, der zweite verarbeitet die Hashes von 51..100 –