在学VB的随机函数时,出现了randomize和rnd函数,并且MSDN中显示有
randomize(number)
rnd(number)
竟然可以加参数。
因此,刚刚研究了一下加number参数的事情。
了解到,随机函数生成随机数是需要一系列种子来生成一列伪随机数。
那么生成随机数是rnd的事情,而生成种子则是randomize的事情。
一、Rnd函数
当rnd不使用number参数时,且无randomize进行初始化,则无论何时生成的一系列随机数都相同。
当使用number参数时,则有一点区别:number大于0时,与不使用number参数时表现一摸一样,随机数也相同。
而当number小于等于0时,不同的number生成一些列相同的随机数,也就是重复的。所以想要一个重复的数字就用rnd(<=0),想要多个重复的序列,就用多次负数。
二、randomize函数
显然rnd不能满足我们对随机数的需求,这是因为rnd的种子不行,需要吃点补药壮一壮,randomize上场。
Randomize不调用number参数时,这时默认使用系统时间为参数,timer:
Rnd无参和Rnd的参数number大于0时,均生成一系列不同的随机数,任何时候都不一样的随机数,说明randomize的已经将随机数生成器初始化了,种子每时每刻都在改变。
当Rnd的number等于0时,出现一个奇怪的现象,虽然生成的一系列随机数不相同,但是随机数之间的变化变得很小。
当rnd的number小于0时,又会变的和没有randomize一样,任何时候都生成一系列相同重复的随机数。
三、当randomize调用number时,而rnd无参时:
randomize(number),其中number是确定的值,此时调用rnd生成的也是一系列确定的随机数列。
四、当randomize和rnd都调用number参数时,这就有趣了。。
经过试验发发现,当rnd调用的number小于0时,randomize失去作用。
当rnd调用number等于0时,randomize的number变化,rnd也随之变化,当number都为0时,结果为0。
当rnd调用number大于0时,randomize的number变化,结果是一系列随机,每次运行都不变的随机数列。
五、结论
研究这么多,浪费功夫了。
想要随机数就
randomize
rnd
想要