【发布时间】:2012-01-01 14:18:32
【问题描述】:
我希望能够获得 System.Random 的实际状态或种子或任何内容,以便我可以关闭应用程序,当用户重新启动它时,它只是用存储的应用程序“重新播种”它并像以前一样继续从未关闭。
有可能吗?
使用 Jon 的想法,我想出了这个来测试它;
static void Main(string[] args)
{
var obj = new Random();
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("c:\\test.txt", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();
for (var i = 0; i < 10; i++)
Console.WriteLine(obj.Next().ToString());
Console.WriteLine();
formatter = new BinaryFormatter();
stream = new FileStream("c:\\test.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
obj = (Random)formatter.Deserialize(stream);
stream.Close();
for (var i = 0; i < 10; i++)
Console.WriteLine(obj.Next().ToString());
Console.Read();
}
【问题讨论】:
-
我创建了一个新的库来处理这个问题:github.com/RafalSzefler/NPrng 它提供了几个不同的带有序列化器的 prng 算法。