为什么 rand() 一直给出相同的值?

CLD*_*LDY 1 c++

每次调用该函数时,总是“number = 5”。数字始终保持为 5。我已经检查过它以确保 srand 只运行一次,有些我很困惑。这是一个类内部的函数。

int playType::getComputerMove(){
    int number;
    if(gamesPlayed == 0){
        srand(time(NULL));
    }
    number = rand() % 1 + 5;
    return number;
}
Run Code Online (Sandbox Code Playgroud)

小智 6

您的问题与操作顺序有关。rand() % 1加五之前就解决了。因为n % 1 = 0,你总是会得到 5。本质上,发生的事情是这样的:

number = (rand() % 1) + 5;
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,您需要以这种方式添加括号:

number = rand() % (1 + 5);
Run Code Online (Sandbox Code Playgroud)

  • 接得好!然而,我不确定OP实际上想要实现什么——也许是“rand() % 5 + 1”的换位? (2认同)