我必须能够重复使用我的代码所做的实验,它产生一些随机数,我需要获取我的新 random() 语句的初始化值。我有这句话来制作我使用的随机对象

Dim r As Random = New Random()

正如我所读到的,它从系统日期时间获取初始化值。如果实验成功,我需要能够重复它。我怎样才能获得初始化编号才能做到:
 Dim r As Random = New Random(OldInitializationValue)

我想每次执行我的应用程序时我都必须自己创建一个 Initialization 值,但是如果有一种方法可以保存它,我会很高兴知道它。

预先感谢您的回答。

最佳答案

Random 不公开初始种子,它甚至不存储它,因此无法检索它。因此,您必须使用获取种子并自行存储的 constructor

Dim mySeed As Int32 = Environment.TickCount ' store it somewhere '

Dim myRandom = New Random(mySeed)
For i As Int32 = 1 To 10
    Console.WriteLine(myRandom.Next(1, 100))
Next

' somehwere else
myRandom = New Random(mySeed)
For i As Int32 = 1 To 10
    Console.WriteLine(myRandom.Next(1, 100))
Next

现在你总是可以用相同的种子创建一个随机实例来获得相同的伪随机值序列。

关于.net - 如何从已经创建的 Random 中获取种子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36030374/

10-16 09:00