永发信息网

c#编程的时候需要快速连续的生成多个随机数怎么解决?

答案:1  悬赏:50  手机版
解决时间 2021-04-01 04:33
  • 提问者网友:溺爱和你
  • 2021-03-31 20:17
c#编程的时候需要快速连续的生成多个随机数怎么解决?
最佳答案
  • 五星知识达人网友:鸽屿
  • 2021-03-31 20:52
首先你要阐述“连续的生成多个随机数”是什么概念,
是连续产生 “随机数”,还是 多个随机数是连续的,

产生随机数使用Random即可实现,
如int类型的随机数:
int a = new Random().Next(); //.Next方法提供3个重载可以指定最大最小范围,

如果是需要“多次”生成,那么使用循环来做Random即可。
如果是要“连续”,那么你首先要求一个随机数,然后对这个随机数进行不停的++。来获得他连续的数字。追问要是有这么简单我就不会在这问了,Random().Next()的方法默认的种子是系统时间,连续生成的话就会产生相同的随机数,虽然声明同一个Random系统会产生不同的随机数,但是在方法完结之后重新运行方法还是会生成相同的随机数这就让我头疼了,网上虽然有些产生随机数的种子方法但是试了几个都不行。
还有你理解的“多个随机数是连续的”这个只有第一个生成的随机数才叫随机数,后面的就不应该叫随机数了追答random的种子是什么都没关系啊,种子只是初始化的时候附带的。
你做循环的时候
如果是单线程,
var r = new Randow();
var result = new List();
for()
{
result.Add(r.Next());
}
只要实例一个randow就好了,如果你把random写到循环里面,计算机现在速度这么快,肯定是很多一样的。

如果是多线程也是同理,主线程实例一个random然后用委托回调。追问这里的确是随机的,但我在追问的时候已经说过了,这个方法执行完毕之后再次执行该方法呢?再次产生的随机数又和原来的随机数一样了!就算把random声明为全局变量也没用。不过刚才倒是从网上找打了一个随机数种子倒是挺好的 Guid.NewGuid().GetHashCode() 虽然感觉还是没有完全的随机,但是比时间做种子好多了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯