为什么rand()继续赋予相同的值?

时间:2020-02-06 02:17:20

标签: c++

每次调用该函数时,始终为“ number = 5”。该数字始终保持为5。我已经对其进行了检查,以确保仅当我感到困惑时才运行srand。这是一个类内部的函数。

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

1 个答案:

答案 0 :(得分:6)

您的问题在于操作顺序。 rand() % 1在添加五个之前得到解析。从n % 1 = 0开始,您将始终获得5。本质上,这是在发生什么事情:

number = (rand() % 1) + 5;

为了解决此问题,您将需要通过以下方式添加括号:

number = rand() % (1 + 5);