如何用VB产生一个每次都不一样的随机数啊,用rnd的话只能产生一个固定的数字

2024-12-13 06:35:11
推荐回答(5个)
回答1:

第一种方式: 使用无参数的Random()构造函数;

默认种子值是使用DateTime.Now.Ticks作为种子值的,如果触发Random函数间隔时间很短,就有可能造成产生一样的随机数。

第二种方式: 使用RNGCryptoServiceProvider生成种子值;生成速度较慢。

1、Random() 

使用与时间相关的默认种子值,初始化 Random 类的新实例。

2、Random(Int32) 

使用指定的种子值初始化 Random 类的新实例。

参数为种子值,数据类型为Int32,用来计算伪随机数序列起始值的数字。 如果指定的是负数,则使用其绝对值。

Random类生成随机数是伪随机数,所以在Random的内部产生机制中还是有一定规律的,并非是真正意义上的完全随机。 如果种子值相同则每次均产生相同的随机数。


扩展资料

Random 类位于 java.util 包中,主要用于生成伪随机数。Random 类将 种子数 作为随机算法的起源数字,计算生成伪随机数,其与生成的随机数字的区间无关。

创建 Random 实例时,若没有指定种子数,则会以当前时间作为种子数,来计算生成伪随机数。拥有相同种子的 Random 实例,在相同次数下,生成的伪随机数完全相同。

random.nextBoolean():

用于从该随机数生成器的序列中得到下一个伪均匀分布的 boolean 值。

random.nextBytes():

用于生成随机 byte 值并将其放入用户提供的 byte 数组中,生成的随机 byte 数等于 byte 数组的长度

参考资料来源:

百度百科——random()

回答2:

必须要初始化:Randomize。没有种子。出来的数据肯定是固定的。
Randomize 语句示例
本示例用 Randomize 语句初始化随机数生成器。由于忽略了数值参数, 所以 Randomize 用 Timer 函数的返回值作为新的随机数种子值。
Dim MyValue
Randomize ' 对随机数生成器做初始化的动作。
MyValue = Int((6 * Rnd) + 1) ' 生成 1 到 6 之间的随机数值。

回答3:

'需要先使用
Randomize ' 对随机数生成器做初始化的动作。
'但不能保存绝对不重复
'你说的每次应该是有限的,产生的数是有范围的,数量的个数就是有限的,根据抽屉原理,总有重复的时候。
'除非……

回答4:

需要先使用
Randomize ' 对随机数生成器做初始化的动作。

回答5:


a(n) = Int(90 * Rnd) + 10
改为 a(i) = Int(90 * Rnd) + 10