c/c++随机数产生相同解决方案
谨记srand()不要调用两次或两次以上。。void main() { for(int i=0;i { srand( (unsigned)time( NULL ) ); cout } } 这样调用的时候,因为CPU高速的关系,调用的srand( (unsigned)time( NULL ) ); 生成的种子数一样。导致rand(
谨记srand()不要调用两次或两次以上。。
void main()
{
for(int i=0;i<10;i++)
{
srand( (unsigned)time( NULL ) );
cout<<rand()<<endl;
}
}
这样调用的时候,因为CPU高速的关系,调用的srand( (unsigned)time( NULL ) ); 生成的种子数一样。导致rand()产生的随机数也一样。
改为:
void main()
{ srand( (unsigned)time( NULL ) );
for(int i=0;i<10;i++)
{
cout<<rand()<<endl;
}
}
有时候这些错误很隐蔽,在构造函数中做了一个check方法。在check方法中调用init方法,然后在init方法中产生随机数。注意如果srand( (unsigned)time( NULL ) ); 被写进了check()或者init()等方法中,一定要保证该方法在构造的时候只被调用一次。最好是把该行代码srand( (unsigned)time( NULL ) );写到构造函数中进行初始化种子的操作。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)