多个随机数是相同的 [英] Multiple random numbers are the same
问题描述
可能重复:结果
的随机数生成器只生成一个随机数
块引用>
一个初学者的问题。我有一个非常简单的程序,绘制一条线,我想随机的位置,但每次我创建一个新的实例随机它返回相同的值。哪里有问题?谢谢
私人无效抽奖()
{
随机random1 =新的随机();
INT randomNumber1 = random1.Next(0,300);
随机random2 =新的随机();
INT randomNumber2 = random2.Next(0,300);
随机random3 =新的随机();
INT randomNumber3 = random3.Next(0,300);
随机random4 =新的随机();
INT randomNumber4 = random4.Next(0,300);
System.Drawing.Graphics G = this.CreateGraphics();
朋绿=新朋(Color.Green,5);
g.DrawLine(绿色,新点(randomNumber1,randomNumber2),
新点(randomNumber3,randomNumber4));
}
私人无效btndraw1_Click(对象发件人,EventArgs五)
{
抽奖();
}
解决方案发生这种情况的原因是,每次你做一个新的
随机时间
它正在使用的时钟初始化。因此,在一个紧密的循环(或多个电话一前一后),你得到的价值,很多时候一样,因为所有的随机变量都使用相同的种子初始化。
要解决这个问题:创建只有一个随机变量,最好之外的功能,并且只使用一个实例
随机random1 =新的随机( );
私人无效抽奖()
{
INT randomNumber1 = random1.Next(0,300);
INT randomNumber2 = random1.Next(0,300);
INT randomNumber3 = random1.Next(0,300);
INT randomNumber4 = random1.Next(0,300);
System.Drawing.Graphics G = this.CreateGraphics();
朋绿=新朋(Color.Green,5);
g.DrawLine(绿色,新点(randomNumber1,randomNumber2),新点(randomNumber3,randomNumber4));
}
Possible Duplicate:
Random number generator only generating one random numberA beginner question. I have a very simple program that draws a line and I want to randomize the locations, but each time I create a new instance of Random it returns the same value. Where is the problem? Thank you.
private void Draw() { Random random1 = new Random(); int randomNumber1 = random1.Next(0, 300); Random random2 = new Random(); int randomNumber2 = random2.Next(0, 300); Random random3 = new Random(); int randomNumber3 = random3.Next(0, 300); Random random4 = new Random(); int randomNumber4 = random4.Next(0, 300); System.Drawing.Graphics g = this.CreateGraphics(); Pen green = new Pen(Color.Green, 5); g.DrawLine(green, new Point(randomNumber1, randomNumber2), new Point(randomNumber3, randomNumber4)); } private void btndraw1_Click(object sender, EventArgs e) { Draw(); }
解决方案The reason this happens is that every time you do a new
Random
it is initialized using the clock. So in a tight loop (or many calls one after the other) you get the same value lots of times since all those random variables are initialized with the same seed.To solve this: Create only one Random variable, preferably outside your function and use only that one instance.
Random random1 = new Random(); private void Draw() { int randomNumber1 = random1.Next(0, 300); int randomNumber2 = random1.Next(0, 300); int randomNumber3 = random1.Next(0, 300); int randomNumber4 = random1.Next(0, 300); System.Drawing.Graphics g = this.CreateGraphics(); Pen green = new Pen(Color.Green, 5); g.DrawLine(green, new Point(randomNumber1, randomNumber2), new Point(randomNumber3, randomNumber4)); }
这篇关于多个随机数是相同的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!