产生随机数的问题。
在VBScript的语言参考手册中有这么一条:Randomize
Note To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.
即:
注意 :要重复随机数的序列,请在使用数值参数调用 Randomize 之前,立即用负值参数调用 Rnd。使用相同的 number 值的 Randomize 不能重复先前的随机数序列。
我用代码试验:
Randomize(10)
msgbox rnd(10)
产生的是总是第一个产生的随机数,这是不是和上面的不相符?
而用
Randomize‘ 这是系统时间产生的随机数
msgbox rnd(10)
产生的是随机数
而对于第一句不是太理解,是不是说
msgbox rnd(-1)
Randomize
msgbox rnd(10)
可这样产生的仍然是随机数。
应该怎么理解?
thanks 公式是:Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
upperbound是最大数,lowerbound是最小数 对不起,我不是问的产生随机数的公式,这个公式我知道,我是想问一下VBScript的语言参考手册中的note的一个问题,any way,thank you all the same。 如果换成是循环来看:
x = 0
While x<10
Randomize (10)
msgbox rnd(10)
x = x+1
Wend
这样他就是产生了不同的十个随机数,这样好像就证明了:使用相同的 number 值的 Randomize 不能重复先前的随机数序列。
但是新的问题是:当我在这次循环完成后,重新调用这个函数,结果得到的十个随机数又是和上一次产生的10个随机数是同样的,为什么会是这样的结果?why? Randomize uses number to initialize the Rnd function's random-number generator, giving it a new seed value.
是不是系统在第一次运行时产生了一个被用来计算随机数的种子,而在之后的运算中没有产生新的种子,所以之后的随机数都一样(这样的情况和没有产生新种子的情况是一样的),那使用相同的 number 值的 Randomize在每次不同的运行时会产生不同的随机数呢? While x<10
rnd(-1)
Randomize (10)
msgbox rnd(10)
x = x+1
Wend
通过这样的代码运行出来是10个一样的数,这好像就说明了:要重复随机数的序列,请在使用数值参数调用 Randomize 之前,立即用负值参数调用 Rnd。这一条。 谢谢各位,最初的问题搞清楚了。 其实应该多谢你才对
回复 2# 的帖子
标准答案。
页:
[1]