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

标签 c++

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

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

最佳答案

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

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

为了解决此问题,您将需要通过以下方式添加括号:
number = rand() % (1 + 5);

关于c++ - 为什么rand()继续赋予相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60086822/

相关文章:

c++ - glTexImage2D 在 OpenGL 3 及更高版本的 GLUT/FreeType 示例中失败

c++ - 互斥量超出范围时会解锁吗?

C++ 链表和节点模板链接错误

c++ - 如何正确地将 2D 图像纹理映射到 icosphere

c++ - 在 Qt Creator Ubuntu 12.04 中设置 OpenCV

c++ - 苹果、橘子和指向最派生的 c++ 类的指针

c++ - 获取没有初始参数的省略号函数参数

c++ - 如何从文件中读取多个表达式?

c++ - stringstream 输出的原因是什么?

c++ - c++中的继承,里面输出