我的程序是 win32 DLL,如下代码:srand(12);该函数产生随机数的起始发生数据,然后我会根据这个起始发生数据(或种子)用rand()生成N个随机数。
但是,我的程序其它功能也需要用到随机数,并且需要重新选取起始发生数据,假如我再次 srand(8);然后还再rand()生成N个随机数,请问能不能不影响第一次的随机数顺序?怎么实现两路随机数互不相干的进行?类似多线程或者多进程。。
但是,我的程序其它功能也需要用到随机数,并且需要重新选取起始发生数据,假如我再次 srand(8);然后还再rand()生成N个随机数,请问能不能不影响第一次的随机数顺序?怎么实现两路随机数互不相干的进行?类似多线程或者多进程。。
解决方案 »
- esp和ebp的关系: 局部变量的地址以esp作为起点开始计算就行了,为什么还要用到ebp作为起点来计算局部变量的地址?
- 点击自定义协议连接,怎么防止重复启动程序呢?
- BitBlt打印BMP,数据量太大问题
- 帮个忙,给个VC 6.0下 API函数写得带源程序的串口通信软件,急用!!!
- 我想在工具栏里做下拉列表,像word里下拉就改变字体,颜色.请指教
- 编得有点迷惑了~~~求教
- MFC方式的COM编程,嵌套类对象与父类对象的偏移问题
- TRACE的一个很奇怪的问题
- 文本插入符问题
- 求助mcf中的一个查询功能?
- 单击任务栏上的icon,窗口会还原或者最小化,应该怎么实现
- 使用HOOK重绘拦截WM_PATIN重绘界面出现问题
不过你可以写自己的rand函数。实际上rand函数十分简单,你去看看源代码就知道了,照着写一个不过几分钟的事情。
rand()
不过你可以写自己的rand函数。实际上rand函数十分简单,你去看看源代码就知道了,照着写一个不过几分钟的事情。
if(srandnum>0){ srand(8);//初始化 }else{
while(true){ if(){ return rand(); }else{ Sleep(1000);//避免占用资源
} }
}}
只要种子不变,序列就是确定的通常是用3楼的方法使用随机种子,因为time返回的时间是以毫秒为单位计的,调用sand的时间
在毫秒级上难以预料,就达到理想的随机效果了
随机函数其实很好写
就一句话
其中nSeed是种子
int __cdecl rand (
void
)
{
return( ((nSeed = nSeed * 214013L
+ 2531011L) >> 16) & 0x7fff );}