我用SDK写了个小东东,其中用到了计时器和随机数。
先说随机数,函数体是这样的。
int GetRandNumber ( )  {
int rNumber;
srand ( time( NULL ) );
rNumber = rand() % 26;
return rNumber;
}
我想大家一看就懂了,就是求26以内的随机数(0~25),我也就不多说了。(在我这个东东里,是用来表示26个字母)!以时间做为种子的!
而计时器,每两秒运行一次,每次都调用这个随机数函数。 但不知道为什么,随机数竟然会变得有规律了,求出来的数,比如,4,25,1,7,  4,25,1,7,    4,25,1,7………
倒,竟然这么有规律,这是为什么呀!但我要是把rand() % 26;中的26改成24就没事儿了。或者把计时器改成3.5秒以上也没什么事儿了。 一切就正常了。 
这是怎么回事儿, 我必须用rand() % 26;中必须用26,计时器也必须用两秒, 这个问题该怎么解决呢。

解决方案 »

  1.   

    srand ( time( NULL ) );
    这一句把它放到程序的入口处或初始化函数里,保证他被执行且只被执行一次即可。
    不要放在会被多次调用的函数里。
      

  2.   

    放在初始化函数中,或类的constructors
    用SetTimer()每两秒发送一个消息
    再rand()就行了
      

  3.   

    srand ( time( NULL ) );在程序开始处写一次就行。
    注意:这种方法生成的随机数是伪随机数,产生真正的随机数一般都用自然界中真正随机的事来模拟。
      

  4.   

    谢谢各位了!自然界中真正随机的事来模拟? for example?