在Visual Basic 2008中随机生成数字的最快方法是什么?

时间:2010-01-08 03:49:39

标签: vb.net visual-studio random

随机生成数字或随机模拟数字的最快方法是什么?我真的不需要一个真正的随机数生成器,模拟随机是可以接受的。我尝试了其他随机模拟方法,但没有比这更快。

这是我现在最快的方式:

Private myRandom As New System.Random(CType(System.DateTime.Now.Ticks Mod System.Int32.MaxValue, Integer))
Private sub Test1
     Dim F as integer = myRandom(0, 203)
End Sub

3 个答案:

答案 0 :(得分:3)

我能想到获得随机数的最快方法是提前生成大量随机数,然后重复循环。除非阵列的大小很大,否则这也可能产生非常差的质量结果。质量也会受到生成数字的影响。

答案 1 :(得分:2)

你真的需要最快的方法吗?对它质量的最低限制是什么?

我怀疑内置随机数发生器Random虽然不一定是最快的,但在“最小标准”和速度之间有一个合理的权衡。

如果没有,这里有一些其他随机数生成器的信息,其中一些可能更快,其中一些可能更糟。在质量和速度之间会有一个权衡,所以我怀疑你会想要最快的。

http://www.google.ca/search?source=ig&hl=en&rlz=1R2ADSA_enCA338&q=FAST+pseudo+random+number+generator&meta=lr%3D&aq=f&oq=

`

答案 2 :(得分:1)

以下是三种方法,按速度顺序(在我的测试中,百万次迭代为19 ms):

dim rand as new random(0)

i = rand.next

稍慢一点是调用xkcd函数(24 ms):

function random as integer
random = 4 ' chosen by fair dice roll
end function

稍微慢一点的是浮点VB函数(67 ms):

x = rnd(x)

每个都比系统时钟滴答的最后几位更快。函数开销似乎足以证明使用内置随机函数。例如,如果使用几乎任何算法生成浮点随机数,它最终会比rnd vb函数慢。整数和随机类相同。

相关问题