Получение точно таких же результатов из rand () из-за создания глобального объекта перед основной функцией

Я использую rand для получения «случайных» чисел в Windows, Visual Studio 2010.

В основной файл я включил и и использую это:
srand(time(NULL))

И в другом файле, в конструкторе объекта
(объект определяется глобально, благодаря его использованию в функциях OpenGL (Init, Render)
Я вызываю rand ()% bound 10 раз и получаю одинаковый результат как на моем ноутбуке, так и на компьютере.

Это должно быть связано с тем, что объект создается до посева ранда из основного.

Как я могу избежать этого и сохранить объект глобальным?

0

Решение

В конструкторе вашего глобального объекта сделайте srand(time(NULL)) Перед использованием rand, Альтернативно, есть другой нелокальный объект со статической продолжительностью хранения, который делает srand(time(NULL)), Убедитесь, что он определен в той же единице перевода, но перед вашим объектом, который использует rand, Нелокальные объекты со статической продолжительностью хранения инициализируются в порядке определения.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]