Я использую rand для получения «случайных» чисел в Windows, Visual Studio 2010.
В основной файл я включил и и использую это:
srand(time(NULL))
И в другом файле, в конструкторе объекта
(объект определяется глобально, благодаря его использованию в функциях OpenGL (Init, Render)
Я вызываю rand ()% bound 10 раз и получаю одинаковый результат как на моем ноутбуке, так и на компьютере.
Это должно быть связано с тем, что объект создается до посева ранда из основного.
Как я могу избежать этого и сохранить объект глобальным?
В конструкторе вашего глобального объекта сделайте srand(time(NULL))
Перед использованием rand
, Альтернативно, есть другой нелокальный объект со статической продолжительностью хранения, который делает srand(time(NULL))
, Убедитесь, что он определен в той же единице перевода, но перед вашим объектом, который использует rand
, Нелокальные объекты со статической продолжительностью хранения инициализируются в порядке определения.
Других решений пока нет …