最优随机数生成器

cajaladic1975

New member
有没有比这个更好的生成随机数的函数呢:Dim rdm As New Random(System.DateTime.Now.Millisecond)Dim number as integer = rdm.[Next](min,max) 例如最好的旋转器使用哪种数字生成器?
 

esgnacenba1979

New member
你尝试过使用静态Random方法来运行你的方法吗(在你的案例中是rdm)?我相信它会比你目前的方法产生更多的独一无二性。
 

acconsobou1985

New member
几乎所有基于静态算法的随机数生成器都会输出类似的结果。为了使它们有效,随机数生成器必须用动态值种子化。在您的情况下,您正在使用当前时间进行种子化。那么当前方法有什么问题呢?
 

mahumaste1988

New member
基于时间进行播种的问题在于CPU处理得非常快,一毫秒内可以生成大量的数据。因此,你将使用相同的种子来产生你的随机整数。为了测试这一点,将你的代码放在一个for循环中,循环一千次,同时将整数输出为字符串,这样你可以看到你得到了什么。你会注意到很多相同的值。
 

mertiniri1974

New member
这些结果看起来还不错吗?此功能生成介于1和255之间的随机数,因此如果我想要生成介于其他值而不是1和255之间的随机数,则必须使用循环。
 

repsiworti1988

New member
谢谢。所以你仍然使用随机函数,只是种子是随机的。我不确定这比使用静态随机更好-如下所示:Static rdm As System.Random = New System.Random()。
 

tiasafile1988

New member
这样略有进步且更加简单。1-99测试1 = 37个副本,测试2 = 35个副本,平均执行时间:12毫秒。1-999测试1 = 345个副本,测试2 = 367个副本,平均执行时间:630毫秒。1-9999测试1 = 3688个副本,测试2 = 3688个副本,测试3 = 3662个副本,平均执行时间:11294毫秒。
 
顶部