代码1:
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
GetRandom();
}
private void GetRandom()
{
Random R=new Random();
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个一样的数字代码2:
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
GetRandom();
}
private Random R=new Random();
private void GetRandom()
{
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个不一样的数字代码3:
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
System.Threading.Thread.Sleep(1000);
GetRandom();
}
private void GetRandom()
{
Random R=new Random();
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个不一样的数字有谁能解释这个现象!特别是代码1和代码2为什么输出不同的结果?
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
GetRandom();
}
private void GetRandom()
{
Random R=new Random();
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个一样的数字代码2:
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
GetRandom();
}
private Random R=new Random();
private void GetRandom()
{
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个不一样的数字代码3:
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
System.Threading.Thread.Sleep(1000);
GetRandom();
}
private void GetRandom()
{
Random R=new Random();
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个不一样的数字有谁能解释这个现象!特别是代码1和代码2为什么输出不同的结果?
private void button1_Click(object sender, System.EventArgs e)
{
GetRandom();
}
private void GetRandom()
{
Random R=new Random();
Console.WriteLine(R.Next(100).ToString());
Console.WriteLine(R.Next(100).ToString());
}
结果输出两个不一样的数字
代码1,两个Random对象几乎同时生成,可以说两个对象一摸一样,所以生成的数字一样的代码2,只有一个Random对象,调用Next方法获取新的数字,所以肯定不会相同。代码3,因为间隔了1000,所以Random对象不同了。
kill v192;"Random的原理是基于时间的"
那么世界上所有机器同时获取一个Random,会取到相同的值了?
我去试验一下
把电子计算器Resert之后,你做固定的操作再去Random,第一次出现的数字绝对是不变的。你重复多次都是一样的。所以,如果你若全世界的都在时间A点生成的一个Random对象,那么他们执行第N次(N必须为同一个数字)Next方法得到的数字必然是相同的。