Задать вопрос
@Bur-Burito

Как отрубить оптимизатор в С#?

Прошу прощения за, возможно, глупо сформулированный вопрос.
В коде, внутри цикла, есть генератор случайных булевых значений new Random().Next() % 2 == 0
При отладке работает отлично, но при запуске программы все возвращаемые им значения одинаковы.Видимо, работает какой-то оптимизатор. Как его можно отключить?
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Sumor
Если создавать Random в одно время, то они будут инициироваться одним и тем же числом. Настоящая генерация псевдослучайных чисел происходит при вызове метода Next и должна вызываться у одного и того же объекта Random.
Создайте один раз Random, инициировав его, например, количеством тиков: new Random((int) DateTime.Now.Ticks & 0x0000FFFF).
Конструктор Random (Int32)
Затем используйте Next(), для получения следующих чисел.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
TheTalion
@TheTalion
Ответ написан
Комментировать
Rou1997
@Rou1997
Оптимизация компилятора здесь ни при чем, если считаете что она виновата - используйте дизассемблер (ildasm и ilasm) и скажите как написать на MSIL чтобы работало верно.
На самом деле просто не надо каждый раз создавать новый объект Random или используйте seed, чтобы числа были случайными, а не псевдослучайными.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы