VB中randomize是用来产生什么样的随机数啊?

如题所述

第1个回答  2019-05-27
这是一个较复杂的数学问题:我记得看到过相关介绍,具体不记得是哪里了。
你可以搜一搜关键字为“产生随机数的算法”的相关内容。大致原理如下:
在计算机程序设计语言中,都有定义了产生随机数的函数,程序员只要调用该函数,就可以产生随机数。数学中,函数需要有一个(或多个)自变量,那么产生随机数的函数,也需要一个自变量。
下面解释vb的rnd函数与randomize函数的作用与关系:
rnd函数需要一个自变量(也叫做产生随机数的种子),来产生一个随机数。但是,我们在使用rnd函数的时候,并没有给过它什么种子数?这就与randomize函数有关了:
1,当使用rnd函数之前,如果没有使用randomize函数,那么,系统就以某一个固定的数值作为rnd函数的种子,从而产生第1个随机数,接下来第2次呢,就以第1次产生的随机数作为种子,来产生第2个随机数,第3次呢,就以第2次产生的随机数作为种子,来产生第3个随机数,....。一直按这个样方法产生一系列随机数,所以,在不使用randomize函数的情况下,每次使用rnd函数产生的随机数序列是相同的。
2,当使用rnd函数之前,如果使用了randomize函数,那么randomize函数会产生一个随机数,然后,当第1次使用rnd函数产生随机数的时候,系统会把由randomize函数产生的随机数给rnd函数作为第1次的种子。
3,randomize函数的使用格式:
randomize
[参数]
其中参数,是一个数字,用来作为randomize函数产生随机数的种子。如果,每次用相同的参数,作为randomize的种子,那么,结果还是一样,得到的序列是相同的。
例如:
randomize
1
for
i
=
1
to
100
print
rnd
next
i
但是,randomize函数的格式中,参数是可选的,当不带参数的时候,系统会将计算机的时钟(具体不知道使用时钟的什么数据)作为randomize函数的种子,这样以来,有于计算机时钟是在变化的,特别是它的变化周期比较长,这样,就可以产生不同序列的随机数了。
例如:
randomize
for
i
=
1
to
100
print
rnd
next
i
大概的原理就是这样,有不当之处请指正。
记得以前学c语言还是数据结构的书上,专门介绍如何编写产生随机数的函数。