在VB.NET中使用Rnd()之前的Randomize()

时间:2009-09-04 19:03:10

标签: vb.net random

我之前被告知,在VB.NET应用程序中使用Randomize()之前,我应该始终使用Rnd()。然而,没有它,似乎总能正常工作。在这种情况下,为我添加Randomize()做了什么?

它似乎不会影响我的应用程序。

3 个答案:

答案 0 :(得分:8)

在Visual Basic中,Rnd()使用数学运算生成下一个“随机”数字。因为实际操作是已知的,所以给定特定值,您可以预测下一个值。但是,给定一个仲裁起始值,数字具有良好的分布 - 这些是“伪随机”数字。

要将Rnd()从startng保持在可预测的数字(因此每次都给出相同的“随机”数字序列),应该调用Randomize()来使用机器时钟来设置初始值(称为种子)。

(在.NET世界中,如果可以,我会使用System.Random。)

答案 1 :(得分:4)

Randomize()初始化Rnd()的第一个种子。如果你不使用它 - VB.NET将使用默认的种子数。

答案 2 :(得分:1)

Randomize会将种子设置为与时间相关的内容,例如系统正常运行时间或系统日期。因此,每次执行应用程序时,函数Rand()都会显示不同的值。但是,我强烈建议您使用System.Random类而不是VisualBasic Rand()。无需调用任何randomize()函数

以下是一些示例代码,这将生成从下限到上限的六个随机整数:

Dim randObj As New Random( seed )
Dim j As Integer
For j = 0 To 5
    Console.Write( "{0,11} ", randObj.Next( lower, upper ) )
Next j
Console.WriteLine( )