我希望使用种子生成 1 到 26 之间的随机数,但是当我为函数提供相同的种子时,我希望得到相同的数字。
Rnd
andRandomize
函数不适合这种情况,因为它们总是返回一个完全随机的数,而不管种子如何。
我希望使用种子生成 1 到 26 之间的随机数,但是当我为函数提供相同的种子时,我希望得到相同的数字。
Rnd
andRandomize
函数不适合这种情况,因为它们总是返回一个完全随机的数,而不管种子如何。
奇怪的是,您需要先调用 Rnd(-1),然后再调用 Randomize(n) 和 n 作为种子。
对 Rnd() 的后续调用将始终为您提供相同的序列
例如
Sub test()
Call Rnd(-1)
Call Randomize(0)
For n = 1 To 10
Debug.Print Rnd
Next n
End Sub
使用System.Random
类的新实例是一种可能的解决方案,并使用相同的种子初始化每个实例。
Sub Main()
Dim yourSeed = 40 'Or whatever your seed it
Dim random1 As New System.Random(yourSeed)
Console.WriteLine(random1.Next(1, 26)) 'Prints 16
Console.WriteLine(random1.Next(1, 26)) 'Prints 14
Console.WriteLine(random1.Next(1, 26)) 'Prints 19
Dim random2 As New System.Random(yourSeed)
Console.WriteLine(random2.Next(1, 26)) 'Prints 16
Console.WriteLine(random2.Next(1, 26)) 'Prints 14
Console.WriteLine(random2.Next(1, 26)) 'Prints 19
End Sub