欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#Random随机值重复的解决方法

程序员文章站 2022-04-17 21:07:42
使用如上图所示的代码,将会出现如下情况,明明是随机,可值都是同样的,这样的随机几率也太小了,所以估计是代码有问题。 于是搜索了下,发现引起这个问题的原因是C#中的Random是根据时间来产生随机数,而且生成太快。将Random转到定义后就可以发现他的注释就是使用时间的种子值,如下图所示: 网上也有很 ......

 

C#Random随机值重复的解决方法

使用如上图所示的代码,将会出现如下情况,明明是随机,可值都是同样的,这样的随机几率也太小了,所以估计是代码有问题。

C#Random随机值重复的解决方法C#Random随机值重复的解决方法


于是搜索了下,发现引起这个问题的原因是c#中的random是根据时间来产生随机数,而且生成太快。将random转到定义后就可以发现他的注释就是使用时间的种子值,如下图所示:

C#Random随机值重复的解决方法

 

网上也有很多方法来解决,主要是两种:一是使用thread.sleep()给定需要的时间值,二是想办法使new random(int seed)中的参数随机化,参考。

不过突然灵光一闪,有了新的发现:那就是将var random = new random();这句代码移出循环即可解决,如下图所示:

C#Random随机值重复的解决方法

我们再来看下结果:

C#Random随机值重复的解决方法

完美