我遇到一个奇怪的问题,在我的代码中添加Console.WriteLine()语句会更改其提供的数值结果,这没有任何意义。有人知道会发生什么吗?我怀疑这可能是C#编译器中的错误。
我应该提到我错误地使用了一个随机数生成器(我应该在类中对其进行初始化,而应该在一个函数中进行初始化),这可能是发生这种情况的一部分。
我尝试将函数外部的随机数生成器初始化移到类中(请参见下文),这似乎可以解决问题,但是并不能解释正在发生的事情。
这是重现该问题的最简单的代码版本:
class Program
{
static void Main(string[] args)
{
RandomAdd rnd = new RandomAdd();
Console.WriteLine(rnd.ExpectationValue(1000));
}
}
class RandomAdd
{
public int Simulate(double probability)
{
int realization; //Realization of random number generator
Random random = new Random();
realization = random.Next(5);
//Console.WriteLine("hey");
return realization;
}
public double ExpectationValue(int numTrials)
{
int totalSkipped = 0;
for (int i = 0; i < numTrials; i++)
{
totalSkipped += Simulate(.5);
}
return (double)totalSkipped / numTrials;
}
}
我希望程序会打印浮点数,但是会打印一个整数。如果我取消注释Console.WriteLine(“ hey”)命令,它将打印浮点值。
有人知道这里发生了什么吗?