回 帖 发 新 帖 刷新版面

主题:求助MFC中调用随机函数问题


    我在MFC中想调用随机函数rand()
    在头文件中包含了 stdlib.h stdio.h  time.h 
    但是在调用srand 时出现了如图的错误
   请教怎么解决



    还有 srand(time(0));实现的随机数貌似也像伪随机数  因为按得速度快得话随机数的变化几乎很小  

   甚至就没有变化  请教怎么解决这个问题?

回复列表 (共2个回复)

沙发


恩,这是个问题,因为C++里面的时间函数都是返回以秒为单位的,如果你在一秒内中调用几次srand(time(NULL)),初始化的种子是一样的,依次调用随机函数返回的值序列也就一样。解决方案是使用更精确的计时函数当种子,比如C++里面的_rdtsc()、windows api里面的GetTickCount等

板凳

srand((unsigned)time(0)); 
    CString str1,str2;
    int ran_num;
    for(int i=0;i<10;i++)
    { 
        ran_num=rand() % 6;
        str1.Format("%d",ran_num);
        str2 +="  ";
        str2 +=str1;
    }
    MessageBox(str2);

我来回复

您尚未登录,请登录后再回复。点此登录或注册