生成随机数的问题
可能的重复:
为什么我的C# 中的随机数生成器不是随机的?
亲爱的朋友,
我想生成 4 个 1 - 55 之间的随机数,但问题是大多数时候我收到 2 个相同的数字:( 例如生成的数字是2 2 5 9 或 11 11 22 22! 我不知道为什么? 我使用 :
Random random = new Random();
return random.Next(min, max);
来生成随机数。我把它们放在一段时间内,重复 4 次。有什么想法吗?你能帮我吗?
Possible Duplicate:
Why does it appear that my random number generator isn't random in C#?
Dear friends
I want to generate 4 random number between 1 - 55 ,but the problem is that most of the time I receive 2 number same :( for example the generated number is 2 2 5 9 or 11 11 22 22!
I dont know why?
I use :
Random random = new Random();
return random.Next(min, max);
for generating my random number. I put them in a While for repeating 4 times. Any Idea?Would u help me plz?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您创建一个
new Random()
而不指定种子时,它会使用当前系统时间进行播种。我不记得它使用的精度(滴答声?毫秒?),但如果您创建新的随机对象并快速连续使用它们,它们可以轻松地具有相同的种子和从而返回相同的结果。
创建一个
new Random()
,并对其重复调用.Next(min, max)
。When you create a
new Random()
without specifying a seed, it seeds it using the current system time.I don't remember off the top of my head the precision it uses (ticks? milliseconds?) but if you create new
Random
objects and use them in quick succession, they could easily have the same seed and thus return the same results.Create one
new Random()
, and call.Next(min, max)
on it repeatedly.您应该只创建一个 Random() 对象并重复使用它,而不是为生成的每个随机数创建一个新对象。
原因是每次创建一个新的 Random 对象时,它都会从当前时间开始为自己播种。如果您在短时间内创建多个 Random 对象,那么它们将在相同的时间播种,因此它们将生成相同的数字。
You should create just one Random() object and reuse it instead of creating a new one for each random number you generate.
The reason is that every time you create a new Random object it seeds itself from the current time. If you create multiple Random objects within a short period of time then then they will seed with the same time, and so they will generate the same numbers.