随机数。。

随机数。。
   今天写的一个程序,很奇怪,我要让每个ball的M_CurLoc的值都不一样,但是单步调试的时候是做到了不一样,但直接运行的时候结果每个ball的M_CurLoc的值居然都一样,喊我调了2个多小时。。抓狂ing。。
后来发现是随机数里的srand在作怪
void  Balloon::Loc_Reset()
{
        srand(time(NULL));
    M_CurLoc.x 
= rand()%700 + 100;
    M_CurLoc.y 
= rand()%700 + 600;
    flag 
= UP;

}


for (i  =   0 ; i  <  n; i ++ )
{
    tempball.Loc_Reset();

    M_ActBall.push_back(tempball);    

}
这个代码实现的n个ball 中的 M_CurLoc都是一样的,因为CPU运行太快 以致每一次寻环中srand(time(NULL))所取得的系统时间都一样。。(srand的精度为秒),所以在调试和直接运行这两种情况下会出现两种结果。。
最后改了下
void  Balloon::Loc_Reset()
{
    M_CurLoc.x 
= rand()%700 + 100;
    M_CurLoc.y 
= rand()%700 + 600;
    flag 
= UP;

}


void  Balloon::GetSrand()
{
    srand(time(NULL));

}


/**/ ////////////////////////////////////

tempball.GetSrand();

for (i  =   0 ; i  <  n; i ++ )
{
    tempball.Loc_Reset();

    M_ActBall.push_back(tempball);    

}

你可能感兴趣的:(随机数。。)