关于随机数 遇到的一些问题和解决办法

我在用Cocos2d-x的引擎开发游戏。(当然我是一个菜鸟  刚大三)

问题一:虽然我运用了随机数,随机出现1~5之间的一个数,但是我发现,我无论怎么调试我的程序,它还是和第一次随机出现的数字一样,也就是不具有随机性。

  在网上一插  才发现原来计算机是伪随机数。这些百度 第一个 就有介绍,我就不赘述了

 直接上解决办法  :  随机数种子

//初始化随机种子

    struct timeval now;

    gettimeofday(&now, NULL);

    

    //timeval是个结构体,里边有俩个变量,一个是以秒为单位的,一个是以微妙为单位的

    unsigned rand_seed = (unsigned)(now.tv_sec*1000 + now.tv_usec/1000);    //都转化为毫秒

    srand(rand_seed);

添加上了如上的代码,问题果断解决  。。。。。

但是问题来来,挖掘机技术那家强。。。。

问题二:我要随机0~4  结果是; 004032210023.。。。。

            如果我像一个随机数只出现一遍怎么办?  例如 04321   42130 14230 等等

    for (int i = 0; i < 5; i++)//遍历easy数组
    {
        if (List[i] == 0 )
        {
            for (int f = 0; f <= i; f++) //检测本数组之前是否加载过相同的值
                {
                    if (List[f] == Num)
                        {
                            log("重新遍历前的Num = %d",Num);
                            Num = rand()%10;
                            f = 0;              //出现相同的就重新生成,重新遍历
                            log("重新遍历,新的Num = %d",Num);
                        }else{continue;}
                }
            lList[i] = Num;
return List[i];
       }
    }

然后 就解决了 是不是很开心!!!!!

        

猜你喜欢

转载自blog.csdn.net/u013823233/article/details/41049781