随机生成数字或随机模拟数字的最快方法是什么?我真的不需要一个真正的随机数生成器,模拟随机是可以接受的。我尝试了其他随机模拟方法,但没有比这更快。
这是我现在最快的方式:
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
答案 0 :(得分:3)
我能想到获得随机数的最快方法是提前生成大量随机数,然后重复循环。除非阵列的大小很大,否则这也可能产生非常差的质量结果。质量也会受到生成数字的影响。
答案 1 :(得分:2)
你真的需要最快的方法吗?对它质量的最低限制是什么?
我怀疑内置随机数发生器Random虽然不一定是最快的,但在“最小标准”和速度之间有一个合理的权衡。
如果没有,这里有一些其他随机数生成器的信息,其中一些可能更快,其中一些可能更糟。在质量和速度之间会有一个权衡,所以我怀疑你会想要最快的。
`
答案 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函数慢。整数和随机类相同。