我正在尝试使用rand()创建一个随机数/字母,但每次调用时它只会返回相同的数字/字母。
void Location::pick() {
srand(time(NULL));
x = rand() % fieldSize + 1;
int locy = rand() % fieldSize + 1; // rand y
switch (locy) {
case 1: y = 'a'; break;
case 2: y = 'b'; break;
case 3: y = 'c'; break;
case 4: y = 'd'; break;
case 5: y = 'e'; break;
}
}
fieldSize设置为5.我在顶部使用srand()。下面是我调用函数的地方。
void Fleet::deployFleet() {
bool newLoc = true;
Location tmp;
for (int i = 0; i < fleetSize; i++) {
tmp.pick();
ships[i].setLocation(tmp);
}
}
fleetSize设置为5. ships []是5艘船的阵列。 setLocation()只是将船的位置设置为给定参数。
答案 0 :(得分:2)
伪随机生成器将为同一种子生成相同的“随机”数字序列。
您将以秒为单位重复播种发生器。你很快就做了5次。因此,每次迭代的时间总是相同的。因此,您获得所述序列的第一个数字,它将始终相同。