首页 > 解决方案 > 为什么 rand() 一直给出相同的值?

问题描述

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

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

标签: c++

解决方案


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

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

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

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

推荐阅读