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

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

Прошу прощения за, возможно, глупо сформулированный вопрос.
В коде, внутри цикла, есть генератор случайных булевых значений new Random().Next() % 2 == 0
При отладке работает отлично, но при запуске программы все возвращаемые им значения одинаковы.Видимо, работает какой-то оптимизатор. Как его можно отключить?
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 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, чтобы числа были случайными, а не псевдослучайными.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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