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

Random Number Generator - not generating a random number every time

本文关键字:随机数 随机数生成器      更新时间:2023-10-16

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

伪随机生成器将为相同的种子生成相同的"随机"数序列。

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