[英]What's the fastest way to randomly generate numbers in Visual Basic 2008?
随机生成或模拟随机生成数字的最快方法是什么? 我真的不需要真正的随机数生成器,可以模拟随机数。 我尝试了其他随机模拟方法,但没有一个比这更快。
这是我现在最快的方法:
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
我能想到的获得随机数最快的方法是预先生成大量随机数,然后反复循环。 除非阵列的尺寸很大,否则这也可能产生非常差的质量结果。 生成数字的方式也会影响质量。
您真的需要最快的方法吗? 对其质量的最低限制是什么?
我怀疑内置的随机数生成器Random(尽管不一定是最快的)在“最低标准”和速度之间具有合理的权衡。
如果不是,这里是一些其他随机数生成器的信息,其中一些可能更快,而某些可能更糟。 在质量和速度之间需要权衡,所以我怀疑您会想要最快的。
`
按速度顺序(在我的测试中为19毫秒,一百万次迭代),有以下三种实现方法:
dim rand as new random(0)
i = rand.next
调用xkcd函数(24毫秒)要慢一点:
function random as integer
random = 4 ' chosen by fair dice roll
end function
浮点VB功能(67毫秒)稍微慢一点:
x = rnd(x)
这些方法甚至比占用系统时钟滴答的最后几位还要快。 函数开销似乎足以证明使用内置随机函数的合理性。 例如,如果使用几乎所有算法生成浮点随机数,则最终结果将比rnd vb函数慢。 整数和随机类相同。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.