随机数发生器(rand)不是随机的吗?

jn1*_*1kk 0 c++ random

我正在生成迷宫,我只能选择第一列或最后一列.我只能选择偶数行(如果你在1处开始行索引).我有正确的逻辑,除了迷宫开始位置不是随机的.如果我生成50个迷宫,那些都是20x20,所有起始位置都是相同的.任何帮助将不胜感激.谢谢.

void Maze::generatePath()
{
    int startingColumn = -1;
    int startingRow = -1;

    srand (time(NULL));

    int side = rand() % 2;
    startingColumn = (width - 1) * side; // will get first or last column

    int row = rand() % height; // 0 -> height - 1

    if(row % 2 == 0) // even, add one, or subtract if last row
    {
        if(row + 1 >= width)
            startingRow = row - 1;
        else
            startingRow = row + 1;
    }
    else
    {
        startingRow = row; // odd, keep it
    }

    grid[startingRow][startingColumn] = ' '; // starting character is blank
}
Run Code Online (Sandbox Code Playgroud)

每当我生成一个新迷宫时,我都会调用此方法.这段代码是为了获得起始位置.我没有写完其余的.

Dav*_*rtz 7

srand在程序启动时调用一次.通过在同一秒内反复调用它,可以将随机数生成器重置为相同的状态.