随机数生成器 - 每次都不生成随机数

时间:2016-11-07 16:37:31

标签: c++ visual-studio

我正在尝试使用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()只是将船的位置设置为给定参数。

1 个答案:

答案 0 :(得分:2)

伪随机生成器将为同一种子生成相同的“随机”数字序列。

您将以秒为单位重复播种发生器。你很快就做了5次。因此,每次迭代的时间总是相同的。因此,您获得所述序列的第一个数字,它将始终相同。