Rob*_*idt 1 c# random for-loop
我还是C#的新手,我正在尝试构建一个简短的程序,该程序模拟将硬币掷X次的次数:
// Declarations
int headCount = 0;
int tailCount = 0;
// Main Program Logic
Console.WriteLine("Press enter to begin");
Console.ReadLine();
for (int x = 1; x <= 25; x++)
{
Random rnd = new Random();
int flip = rnd.Next(1, 3);
if (flip == 1)
{
Console.WriteLine("Heads");
headCount++;
}
else
{
Console.WriteLine("Tails");
tailCount++;
}
}
Console.WriteLine("Heads came up {0} times.", headCount);
Console.WriteLine("Tails came up {0} times.", tailCount);
if (headCount > tailCount)
{
Console.WriteLine("Heads wins.");
}
else
{
Console.WriteLine("Tails wins.");
}
// END OF DOCUMENT
Console.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
现在,我确信自己的代码是可靠的,但是,在运行程序时遇到了问题。在上面的代码中,想法是每次执行for循环时,都会生成一个新的随机数(1或2)。实际上,十分之九,它会第一次生成一个数字,然后在其余的循环执行中使用该数字。
每个人偶尔都会有大约50/50的结果(您会从统计学上预期),但是通常相同的结果重复25次。
请注意,我在循环内声明了flip变量。我已经在循环中以及循环之前和之后来回移动了,更改似乎没有任何效果。
我是在做错什么,还是C#喜欢抛出统计异常?
原因是因为您一直在打电话new Random()
。相反,您应该在循环和THEN调用之外构造它.next(int,int)
Random rnd = new Random();
for (int x = 1; x <= 25; x++)
{
int flip = rnd.Next(1, 3);
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6277 次 |
最近记录: |