我用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,计时器也必须用两秒, 这个问题该怎么解决呢。
先说随机数,函数体是这样的。
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,计时器也必须用两秒, 这个问题该怎么解决呢。
解决方案 »
- 求助,关于WORD开发的路径问题
- 请问 怎样把一个目录下的所有扩展名为.rmvb的文件改为扩展名为.avi?
- 智慧的鱼—————再发自己的翻译的《Directshow(SDK)帮助文档》,外加自己翻译的《DirectSound(SDK)文档》
- 关于父对话框不能在子对话框前面显示的问题
- 请问如何取得特殊网页窗口下密码编辑框的内容
- 向高手请教:怎样调用实例句柄HINSTANCE
- extern
- 请问如何将对话框中的命令按钮在程序运行的过程中灰化(disable)?
- 多工程问题:如何在一个的工程文件中引用另外一个工程的成员函数
- 急求教:关于DCOM连接点的某一接收器的问题
- ★★★关于多文档的状态栏问题,郁闷了好几天了,救急啊!★★★
- <高手请进> ATL COM中调用使用CImage类的DLL,为什么无法成功释放???
这一句把它放到程序的入口处或初始化函数里,保证他被执行且只被执行一次即可。
不要放在会被多次调用的函数里。
用SetTimer()每两秒发送一个消息
再rand()就行了
注意:这种方法生成的随机数是伪随机数,产生真正的随机数一般都用自然界中真正随机的事来模拟。