2010-11-30 2 views
3

Я пишу случайный генератор вопросов. Я хотел бы выбрать один вопрос из каждого раздела..NET Случайный выбор класса всегда 0, когда диапазон 0 или 1

Случайный класс с DateTime.Now.Milliseconds как начальное значение генерирует случайные числа, если диапазон больше 2 (0,2/2 +). Но, если я даю минимум 0 и максимум 1 в диапазоне, он всегда возвращает меня 0.

Я использую его неправильно.

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

Спасибо, Махеш

+1

Пожалуйста, внесите свой код. – Lazarus 2010-11-30 12:47:10

ответ

13

Вы звоните Random.Next, которая возвращает случайное целое число больше или равно первому параметру и меньше, но не равное, второй.
В частности, вы запрашиваете целое число в диапазоне [0, 1), которое может быть только нулевым.

Если вы ищете целое число, которое либо 0, либо 1, вам необходимо позвонить по телефону Random.Next(0, 2).

Если вы ищете реальное число от 0 и 1, вам необходимо позвонить по телефону Random.NextDouble.

+0

Если вы конвертируете Java-метод Math.random, вам нужно иметь две строки. Случайный r = новый Random(); r.NextDouble(); – MacGyver 2014-09-24 22:23:22

0

Чтение в MSDN (Random.Next(int), Random.Next(int, int)) вы увидите, что верхняя граница всегда является исключительной. То есть, чтобы получить число в диапазоне от 0 до 1 (включительно) и вы можете сделать:

Random prng = new Random(); 
Console.WriteLine(prng.Next(0, 2)); //2 because it is exclusive 
0

MSDN: Random.Next метод (Int32) Возвращает неотрицательное случайное число меньше указанного максимума. Используйте это.

Random random = new Random(); 

for (int i = 0; i < 10; i++) 
{ 
    Console.WriteLine("Genereted value:{0}", random.Next(2)); 
} 
Смежные вопросы