真正的随机函数

    在VB中的随机函数是Rnd,但在使用的过程中发现,虽然程序启动后产生的数值是随机的,但对于每次重新启动,程序都会产生相同的随机数序列,应该怎样解决?

    VB中随机函数的原形是: Rnd(number),Rnd函数返回小于1但大于或等于0的值。number (可选项)的值决定了Rnd生成随机数的方式。由于生成随机数方式的确定,导致了每次新启动随机函数,最初给定的种子都会生成相同的数列,因为每一次调用Rnd函数都用数列中的前一个数作为下一个数的种子。
    为了每次运行程序调用随机函数都会有不同的随机数序列,在调用Rnd之前,先使用无参数的Randomize语句初始化随机数生成器,该生成器具有根据系统计时器得到的种子,这样再调用Rnd就会得到不同的随机数序列了。
    另外,根据Randomize的工作原理,用户也可以编制自己的随机函数,即利用函数Timer得到从午夜开始到现在经过的秒数,然后再根据要得到的随机数值大小对该数值进行“衰减”处理,这样得到的数值则可称得上是真正意义的随机数值。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据