Gibt es eine Möglichkeit, den aktuellen Status von System.Random zu erfassen?

8

Ich möchte den aktuellen Status oder Startwert oder was auch immer von System.Random abrufen können, damit ich eine App schließen kann und wenn der Benutzer sie neu startet, "seziert" es es einfach mit dem gespeicherten und fährt fort, wie es war nie geschlossen.

Ist es möglich?

Mit Jon's Idee kam ich dazu, um es zu testen;

%Vor%     
Fredou 18.11.2011, 20:43
quelle

2 Antworten

10

Es ist serialisierbar, also können Sie vielleicht BinaryFormatter verwenden und das Byte-Array speichern ...

Beispielcode:

%Vor%

Ergebnisse zu einem Beispiellauf sind vielversprechend:

%Vor%

Zugegebenermaßen bin ich nicht scharf auf die eingebaute Serialisierung, aber wenn das für einen einigermaßen schnellen und schmutzigen Hack ist, sollte es in Ordnung sein ...

    
Jon Skeet 18.11.2011, 20:45
quelle
0

Ich bin kein C # -Typ, also habe ich nicht die Ressourcen, um den Quellcode zu sehen, aber der Startwert muss in der Klasse gespeichert werden. Aus seiner Dokumentation ist die Klasse nicht versiegelt, daher sollten Sie in der Lage sein, eine Unterklasse zu erstellen. In dieser Unterklasse können Sie eine Funktion zum Zurückgeben des aktuellen Ausgangs erstellen. Beim Herunterfahren Ihrer App können Sie den Seed (Datei? Datenbank? Affen mit gutem Speicher?) Speichern und dann beim Start Ihrer neuen App wieder laden.

Dies hat den zusätzlichen Vorteil, dass Sie von jedem zuvor gespeicherten Punkt aus zu Sicherungszwecken oder etwas wiederherstellen können.

    
corsiKa 18.11.2011 20:50
quelle

Tags und Links