繁体   English   中英

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

[英]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(尽管不一定是最快的)在“最低标准”和速度之间具有合理的权衡。

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

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

`

按速度顺序(在我的测试中为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM