Как использовать генератор случайных чисел в C #? - PullRequest
0 голосов
/ 29 июля 2011

Я создал приложение Windows Forms, используя Visual Studio Professional в C #.В моей программе я предлагаю пользователю ввести желаемое количество бросков, а затем нажимает ввод, чтобы получить числа.

Числа показаны в одной форме под меткой и подсчитаны.Я знаю, как подсчитать числа, но я не могу заставить генератор случайных чисел сгенерировать количество бросков, которые вводит пользователь.

Вот что я делаю:

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

Я хочу, чтобы одна и та же программа выполнялась столько раз, сколько хочет пользователь.Я попробовал цикл for, но не смог получить то, что хотел.

Ответы [ 4 ]

1 голос
/ 29 июля 2011
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);

Примечание.бит миллисекунды вам не нужен, затравка просто делает его более случайным

1 голос
/ 29 июля 2011

Убедитесь, что вы создали генератор случайных чисел только один раз.

НЕ создавайте его в каждой итерации цикла.

Или числа могут быть не случайными, потому что цикл настолько узок, что будет использовать то же время, что и начальное число во внутреннем генераторе.

1 голос
/ 29 июля 2011

Попробуйте что-то вроде этого:

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);
}

Теперь все отдельные рулоны находятся в рулонах, и их сумма уже рассчитана.

Отредактировано, чтобы бросить две кости, записать их по отдельности и сложить все вместе.

0 голосов
/ 29 июля 2011

Ваш код совершенно неверный ...

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 объект !

...