0

我使用 C# 中的 Visual Studio Professional 创建了一个 Windows 窗体应用程序。在我的程序中,我提示用户输入他/她想要的卷数,然后他们按 Enter 键获取数字。

这些数字以相同的形式显示在标签下并被计算在内。我知道如何计算知道的数字,但我无法让随机数生成器生成用户输入的滚动数。

这就是我正在做的事情:

Random randGen = new Random;
int oneRoll = randGen.Next(1,7) + randGen(1, 7);

我希望相同的程序出现用户想要的次数。我尝试了一个for循环,但无法得到我想要的。

4

4 回答 4

1

尝试这样的事情:

Random randGen = new Random();
var rolls = new List<int>();
int sum = 0;
for (int i = 0; i < numberOfRolls; i++)
{
    int randomNum1 = randGen.Next(1,7);
    int randomNum2 = randGen.Next(1,7);
    sum += randomNum1 + randomNum2;
    rolls.Add(randomNum1);
    rolls.Add(randomNum2);
}

现在所有单独的卷都在卷中,并且已经计算了它们的总和。

编辑为掷两个骰子,分别记录它们,然后将它们加在一起。

于 2011-07-28T22:36:29.980 回答
1
int rolls = Console.ReadLine();
int total = 0; 
Random randGen = new Random(System.DateTime.Now.Millisecond);
for(int i =0; i<rolls; i++)
{
int oneRoll = randGen.Next(1,7) + randGen.Next(1, 7);
Console.WriteLine("Rolled " + oneRoll);
total += oneRoll;
}

Console.WriteLine("Total " + total);

注意。你不需要毫秒位,种子只是让它更随机

于 2011-07-28T22:36:45.420 回答
1

确保只创建一次随机数生成器。

不要在每次循环迭代中创建它。

或者,这些数字可能不是随机的,因为循环非常紧密,它将使用与内部生成器中的种子相同的时间。

于 2011-07-28T22:37:29.017 回答
0

你的代码完全错误...

Random randGen = new Random(DateTime.Now.Ticks); // unique seed, mostly
int result = 0;
for (int i = 0; i < number_of_rolls_the_user_wants; i++)
    result += randGen.Next(2, 14); // (1 - 7) + (1 - 7) = 2 - 14 lol... >.>

替换number_of_rolls_the_user_wants为用户想要的卷数。 result将保持结果。

另请注意,如果您在短时间内生成许多随机数,请使用相同的Random对象

于 2011-07-28T22:37:54.960 回答