我正在使用rand在Windows,Visual Studio 2010上获取一些“随机”数字。
在我已包含的主文件中并使用此:
srand(time(NULL))
在另一个文件中,在对象的构造函数中
(对象是全局定义的,因为它在OpenGL函数中使用(Init,Render)
我在笔记本电脑和台式机上调用rand()%绑定,10次并得到相同的结果。
这应该是因为在从rand播种rand之前创建的对象。
如何避免这种情况并使对象保持全局?
答案 0 :(得分:2)
在全局对象的构造函数中,在使用srand(time(NULL))
之前执行rand
。或者,让另一个非本地对象的静态存储持续时间为srand(time(NULL))
。确保它在同一个翻译单元中定义,但在使用rand
的对象之前定义。具有静态存储持续时间的非本地对象按定义顺序初始化。