C ++ rand()为什么给我相同的数字我怎么能有不同的

时间:2015-03-31 15:26:13

标签: c++ random

if (ii == 3){//车辆只停了一个小时,有3/4的概率离场
    srand((unsigned)time(NULL)*100);
    int a = 1+rand() % 4;
    int b = 1+rand() % 4;
    int c = 1+rand() % 4;
    cout << "++++3 " << a << "++++" << endl;//用作测试判断是否离场函数
    cout << "++++3 " << b << "++++" << endl;
    cout << "++++3 " << c << "++++" << endl;
    cout << "*************" << endl;
    if ((a == 1 && b == 2 && c == 3)||(a==2&&b==1&&c==3)||(a==3&&b==2&&c==1)||(a==3&&b==2&&c==1))
        return true;
    else
        return false;
}

就像这张照片一样,该程序给了我相同的数字,但我需要不同的数字,我该怎么做。

#ifndef Head_H
#define Head_H
#include<stdlib.h>
#include<iostream>
#include<time.h>
#define PathSize 5
#define ParkSize 10
#define Price 5
using namespace std;
srand((unsigned)time(NULL));

1 个答案:

答案 0 :(得分:1)

在程序开始时使用srand一次。

如果您反复重新生成生成器,则会破坏其统计属性。

继续前进:

  1. 避免使用%重新缩放生成器。这将引入统计偏差(除非纯粹的运气,模数是RAND_MAX的倍数。)

  2. 查看C ++ 11随机数库。这包含比普通旧rand更好的指定生成器,这在某些平台上很糟糕。