我用2个骰子创建一个骰子游戏,我已经让它工作了但是唯一的问题是我无法从所有卷(整个游戏)获得总和,我只得到最后2个卷的总和如果我使用Sum方法,我如何找到所有卷的总和?这是我的代码:
Console.BufferHeight = 500;
Random x = new Random();
int throw_times = 1;
int[] dice = new int[2];
dice[0] = x.Next(1, 7);
dice[1] = x.Next(1, 7);
for (int i = 1; i <= 100; i++)
{
dice[0] = x.Next(1, 7);
dice[1] = x.Next(1, 7);
int total_var = dice[0] + dice[1];
int[] total_array = {dice[0] + dice[1]};//total in array
Console.Write("Throw " + throw_times + ": " + dice[0] + " and " + dice[1] + " = ");
Console.WriteLine(total_var);
throw_times++;
Array.Sort(dice);
for (int a = dice.Length - 1; a >= 0; a--)
{
int s = dice[a];
Console.WriteLine("#" + s);
}
}
Console.WriteLine("Total sum: " + dice.Sum());//only returns sum of last 2 rolls
Console.WriteLine("Average: " + dice.Average());//only return average of last 2 rolls
答案 0 :(得分:1)
Sum
和Average
扩展方法将计算数组中当前所有内容的总和和平均值,并且因为您在每次试验中重新设置数组,它只会包含最后两项。
要获得所有骰子卷的总和或平均值,你要么必须扩展你的数组,以便它记录整个程序中所有的骰子卷,或者只是保持一个总计(这似乎更简单) :
int[] dice = new int[2];
int sum = 0;
for (int i = 1; i <= 100; i++)
{
dice[0] = x.Next(1, 7);
dice[1] = x.Next(1, 7);
sum += dice[0] + dice[1];
...
}
Console.WriteLine("Total sum: " + sum);
现在你的问题并不完全清楚你是否也想要所有骰子卷的平均,或者只是最后两个,但是因为你知道总和并且你知道总数(因为那是在您的应用程序中硬编码),您可以非常轻松地计算所有骰子卷的平均值:
Console.WriteLine("Total sum: " + (sum / 200)); // 200 because you roll 2 dice in 100 trials