我还是 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();
}
现在,我确信我的代码是可靠的,但是,当我运行程序时遇到了问题。在上面的代码中,想法是每次执行 for 循环时都会生成一个新的随机数(1 或 2)。实际上,十分之九,它第一次生成一个数字,然后将该数字用于循环的其余执行。
每个人偶尔,结果大约是 50/50(你会在统计上预期的结果),但通常它只是重复 25 次相同的结果。
请注意,我在循环内声明了翻转变量。我已经在循环中和循环之前来回移动它,并且更改似乎没有任何效果。
我做错了什么还是 C# 喜欢抛出统计异常?