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

如题所述

第一种方式: 使用无参数的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()

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-12-01
必须要初始化:Randomize。没有种子。出来的数据肯定是固定的。
Randomize 语句示例
本示例用 Randomize 语句初始化随机数生成器。由于忽略了数值参数, 所以 Randomize 用 Timer 函数的返回值作为新的随机数种子值。
Dim MyValue
Randomize ' 对随机数生成器做初始化的动作。
MyValue = Int((6 * Rnd) + 1) ' 生成 1 到 6 之间的随机数值。追问

不是啊,我要的是每次运行程序时都产生一个新的随机数

追答

我只是给你举个例子。你完全可以将
MyValue = Rnd

本回答被提问者采纳
第2个回答  2011-09-12
'需要先使用
Randomize ' 对随机数生成器做初始化的动作。
'但不能保存绝对不重复
'你说的每次应该是有限的,产生的数是有范围的,数量的个数就是有限的,根据抽屉原理,总有重复的时候。
'除非……
第3个回答  2011-09-12
需要先使用
Randomize ' 对随机数生成器做初始化的动作。
第4个回答  2011-09-13

a(n) = Int(90 * Rnd) + 10
改为 a(i) = Int(90 * Rnd) + 10
相似回答