如何在C#中使用随机数生成器?

时间:2011-07-28 22:31:12

标签: c# random dice

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

这些数字在标签下以相同的形式显示并记录下来。我知道如何计算数字知道,但我不能得到随机数生成器来生成用户输入的滚动数。

这就是我在做的事情:

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

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

4 个答案:

答案 0 :(得分: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);
}

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

编辑滚动两个骰子,单独录制,然后将它们加在一起。

答案 1 :(得分: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);

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

答案 2 :(得分:1)

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

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

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

答案 3 :(得分: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对象