第一种方法不指定随机种子,系统自动选取当前时间作为随机种子:
代码如下 | 复制代码 |
Random ro = new Random(); |
第二种方法可以指定一个int型参数作为随机种子:
代码如下 | 复制代码 |
int iSeed=10; |
这样可以保证99%不是一样。
时间短重复
2.利用种子生成不重复随机数
(a)生成随机数时:Random ran = new Random((int)DateTime.Now.Ticks);
代码如下 | 复制代码 |
ran .Next(minvale, maxvale); |
可以有效解决重复问题
PS: DateTime.Now.Ticks 为数据数的计时周期数
(b) Random random = new Random( GetRandomSeed( ) );//使用加密服务提供程序 (CSP) 提供的实现来实现加密随机数生成器 (RNG) s
代码如下 | 复制代码 |
tatic int GetRandomSeed( ) { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider( ); rng.GetBytes( bytes ); return BitConverter.ToInt32( bytes , 0 ); } 或者 Random sourceGen = new Random(new Guid().GetHashCode());//利用Guid |
3.利用延时运行时间解决重复问题
Thread.Sleep(100);
4.递归,用它来检测生成的随机数是否有重复,如果取出来的数字和已取得的数字有重复就重新随机获取。
代码如下 | 复制代码 |
Random ra=new Random(unchecked((int)DateTime.Now.Ticks)); |
其它一些参考
1: 返回一个共有n位数,其中m位是小数的随机数
代码如下 | 复制代码 |
function randomXiao(n,m){
|
--------------------------------------------------------------------------------
可以用trace(randomXiao(3,2));实验一下。这个函数 简单。Math.pow(n,m)用于返回一个以n为底,m为指数的数。乘方!
# 2: 返回一个n到m之间的随机数
代码如下 | 复制代码 |
function randomNm(n,m){ |
--------------------------------------------------------------------------------
之所以用random(m-n+1)是因为随机数的范围是m-n,加上1使 得m也能在里面。加上n保证随机数以n为下限。
加上判断使函数更完整。另外,如果要返回一个负数随机数,也可以用randomNm(n,0);当 然,我想更一般的是用-random(n);
# 3: 返回一个字母
代码如下 | 复制代码 |
function randomAscii(){ |
--------------------------------------------------------------------------------
#4: 返回一个不区分大小写的随机字母
如果要返回大写,把if条件句去掉就行了。如果要返回小写,可以把条件句改为恒成立,或者 去掉条件,最后一句改为:
return c.toLowerCase(); String.fromCharCode(number)函数返回number代表数字的ASCII码。
toLowerCase()用于将大写字 母转为小写。
# 5: 返回一个n到m之间的k个互异随机数
代码如下 | 复制代码 |
|
樱花校园模拟器4399中文版
樱花校园模拟器4399中文版,十分奇趣好玩的3d校园冒险模拟
我的暑假秘密回忆繁星新春版
我的暑假秘密回忆繁星新春版是一款少女模拟养成类休闲游戏。这款
樱花校园模拟器国际版
樱花校园模拟器国际版,一个超级自由超级好玩的自由恋爱模拟的游
饥荒海难九游版
饥荒海难九游版,带你去真实的海岛上感受一下什么才是真正的孤岛
盖瑞模组体验版最新版
盖瑞模组体验版是玩法非常丰富多元化的沙盒建造游戏,玩家可以在