Лучший отвечающий
Вопрос по циклу

Вопрос
-
Доброго времени суток! Возник вопрос. Вопрос на уровне эллементарного, но я застрял... т.к. новичок в программировании.
for (int i = 0; i < 3; i++) { Random Rand = new Random(); int R= Rand.Next(1, 4); if (R == 1) { Console.WriteLine(1); } else if (R == 2) { Console.WriteLine(2); } else { Console.WriteLine(3); }
Как я думал до этого, при одном шаге цикла код воспроизводится по новому, т.е. по новому создается объект Rand, по новому создается переменная R.
Но на практике цикл выводит 3 строки с одинаковым результатом. Например: 111, 222, 333.
Как правильно написать, чтобы каждая строка генерировала таки случайное число в заданном диапазоне? За ранее спасибо!
24 сентября 2015 г. 19:41
Ответы
-
Генератор псевдослучайных чисел, как правило инициализируется текущим временем. Если очень часто создавать новые объекты Random, то все они будут проинициализированы одним и тем же значением и, соответственно, Вы получите одну и ту же последовательность чисел.
Необходимо вынести конструктор Random за пределы цикла, тогда на каждой итерации получите новое значение.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Предложено в качестве ответа Liliya Muray 24 сентября 2015 г. 21:15
- Отменено предложение в качестве ответа IMykytiv 25 сентября 2015 г. 17:22
- Предложено в качестве ответа AlexFV 25 сентября 2015 г. 17:32
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 5 октября 2015 г. 7:13
24 сентября 2015 г. 20:18
Все ответы
-
Генератор псевдослучайных чисел, как правило инициализируется текущим временем. Если очень часто создавать новые объекты Random, то все они будут проинициализированы одним и тем же значением и, соответственно, Вы получите одну и ту же последовательность чисел.
Необходимо вынести конструктор Random за пределы цикла, тогда на каждой итерации получите новое значение.
Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!
- Предложено в качестве ответа Liliya Muray 24 сентября 2015 г. 21:15
- Отменено предложение в качестве ответа IMykytiv 25 сентября 2015 г. 17:22
- Предложено в качестве ответа AlexFV 25 сентября 2015 г. 17:32
- Помечено в качестве ответа Maksim MarinovMicrosoft contingent staff, Moderator 5 октября 2015 г. 7:13
24 сентября 2015 г. 20:18 -
Спасибо!25 сентября 2015 г. 17:22