C# 为什么在这段代码中我总是得到两个相同的随机值?
可能重复: 我有以下代码:C# 为什么在这段代码中我总是得到两个相同的随机值?,c#,random,C#,Random,可能重复: 我有以下代码: int a; int aa; Random aRand = new Random(); Random aaRand = new Random(); a = aRand.Next(20); aa = aaRand.Next(20); //if (a == aa) { Console.WriteLine(a + "
int a;
int aa;
Random aRand = new Random();
Random aaRand = new Random();
a = aRand.Next(20);
aa = aaRand.Next(20);
//if (a == aa)
{
Console.WriteLine(a + " " + aa);
Console.ReadLine();
}
我假设aRand和aaRand是两个不同的值,但事实并非如此。我做错了什么?我假设aRand和aaRand并不总是一样的,但是他们总是一样的
谢谢您只需要一次随机呼叫。下一次两次
为什么要创建两个不同的随机变量?您可以只使用一个:
int a;
int aa;
Random aRand = new Random();
a = aRand.Next(20);
aa = aRand.Next(20);
//if (a == aa)
{
Console.WriteLine(a + " " + aa);
Console.ReadLine();
}
编辑:
随机数生成从种子值开始。如果重复使用同一种子,则生成相同的数字序列。产生不同序列的一种方法是使种子值与时间相关,从而产生一个不同的序列,每个新的随机序列实例。默认情况下,Random类的无参数构造函数使用系统时钟生成其种子值,而其参数化构造函数可以根据当前时间的节拍数获取Int32值。
从文件中明确说明了这一点: 默认种子值源自系统时钟,具有有限的 决议因此,在中创建的不同随机对象 通过调用默认构造函数关闭继承将具有 相同的默认种子值,因此将产生相同的 随机数的集合
在整个应用程序中,不应该有多个随机变量。除掉第二个
Random aaRand = new Random();
看起来这两个实例使用的是相同的种子 种子确定将生成的所有值及其顺序。如果您使用相同的种子创建了200个Random实例,它们都将提供相同的输出
在应用程序启动时创建一个实例并重用它 c语言是正确的,sry。是的,我只做了一个,它成功了。谢谢
Random aaRand = new Random();