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));
答案 0 :(得分:1)
在程序开始时使用srand
一次。
如果您反复重新生成生成器,则会破坏其统计属性。
继续前进:
避免使用%
重新缩放生成器。这将引入统计偏差(除非纯粹的运气,模数是RAND_MAX
的倍数。)
查看C ++ 11随机数库。这包含比普通旧rand
更好的指定生成器,这在某些平台上很糟糕。