我之前被告知,在VB.NET应用程序中使用Randomize()
之前,我应该始终使用Rnd()
。然而,没有它,似乎总能正常工作。在这种情况下,为我添加Randomize()
做了什么?
它似乎不会影响我的应用程序。
答案 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( )