5 Stimmen

Verteilte sequentielle Zufallszahlengenerierung in Ruby 1.9.2

El Random Klasse in Ruby 1.9.2 wird garantiert, dass sie Zufallszahlen in der gleichen Reihenfolge erzeugt, wenn ein bestimmter Seed und ein bestimmter Bereich angegeben werden. Zum Beispiel:

r = Random.new(23)
r.rand(100)         # 83
r.rand(100)         # 40

Aber nehmen wir an, ich möchte die nächste Zahl in der Folge auf einem anderen Computer generieren (ohne die früheren Zahlen in der Folge neu zu generieren). Dies sollte angesichts der vorherigen Ausgabe möglich sein. Gibt es eine Möglichkeit, dies mit dem Programm Random Klasse? Oder muss ich meine eigene Implementierung der Klasse Mersenne-Twister ?

[ Editar: Wie in den nachstehenden Kommentaren dargelegt, ist es in der Tat nicht möglich, den Zustand eines Random Instanz nur von der Ausgabe, da nur ein Teil des Zustands (insbesondere die unteren 32 Bits) für die Ausgabe verwendet wird].

2voto

steenslag Punkte 75941

Kann nicht getestet werden, aber der Generator kann laut Marc-André Lafortune in Betrieb genommen werden. aquí . Das könnte also funktionieren:

r = Random.new(23)
r.rand(100)         # 83
r.rand(100)         # 40

File.open("/path/to/file","w") do |f|
  Marshal.dump(r,f)
end

# later, may be on another computer

File.open("/path/to/file","r") do |f|
  @v = Marshal.load(f)
end

puts @v.rand(100)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X