分享

c/c随机数产生相同解决方案

 skywood 2007-06-30

谨记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 ) );写到构造函数中进行初始化种子的操作。
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多