c# 如何一次产生多个不同的随机数?

本文探讨了在C#中生成随机数的不同方法及其效果,包括使用Random类的不同构造函数来避免重复,以及利用RNGCryptoServiceProvider类生成高质量随机数的技术。

经过写程序测试,结果总结如下:


1、如果想一次性产生4个随机数,那么使用一个Random对象,调用4次Next函数,如此所示:

Random r = new Random();
int rInt = r.Next(100);
int rInt11 = r.Next(100);
int rInt12 = r.Next(100);
int rInt13 = r.Next(100);

经过反复测试,产生的四个随机数没有发现重复的。

 

2、如果是4个对象,分别调用,如下所示:

Random r = new Random();
int rInt = r.Next(100);

Random r2 = new Random();
int rInt2 = r2.Next(100);

Random r3 = new Random();
int rInt3 = r3.Next(100);

Random r4 = new Random();
int rInt4 = r4.Next(100);

产生的4个随机数每次都是一样的,原因是,Random类是一个产生伪随机数的类,构造函数Random()是根据触发那刻的系统时间做为种子,因为计算机运行速度很快,触发Randm函数间隔时间很短,就会造成产生一样的随机数。而上面用同一个对象的话,感觉c#做了去重优化处理。

 

3、Random类还有一个构造函数Random(int Seed),可以自己设定触发的种子。但是,必须设置不同的种子,才能产生不同的随机数。弊端就是每次得设置不同的种子,不然的话,每次产生的随机数都是一样的。

 

4、如果不是同时就要四个随机数,可以使用延迟的办法产生,因为时间有延迟,随机的种子就会不同,就会产生不同的随机数。

 

5、当然,产生随机数的办法有很多种,如果有更好方法,不吝赐教!
 </

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值