C ++ rand()函数是否包含端点?

时间:2014-08-27 19:00:25

标签: c++

我的问题是rand()函数是否包含终点,或者不包括它们可能返回的值。

rand() % 10 + 1 

是否返回2-9或1-10?

范围内的值

2 个答案:

答案 0 :(得分:5)

来自rand()的{​​{3}}:

  

返回0到RAND_MAX (0和RAND_MAX包含)之间的伪随机整数值。

强调我的。

但是,正如documentation在评论中正确指出的那样,rand()与此问题的结果无关。问题的关键是模数运算符%

因为模运算符导致左操作数除以右操作数的余数,所以rand()可能产生的任何值% 10将在0之间。 9。由于1已添加到该操作的结果中,因此最终输出将介于110之间。

我想补充一点,Benjamin Lindley在他对这个答案的评论和答案中都是正确的,对“这个函数做什么?”这样的问题的答案是通过使用djechlinGoogle等搜索引擎搜索语言名称和功能名称,或者语言的文档,例如{{3},通常可以获得最佳和最快的信息。对于c ++。

答案 1 :(得分:0)

我认为社区直接回答您的问题是不利的。因此,如果您选择理解并自己运行,我会给您留下一个方法,应该给您答案:

int main() {
    for(int i = 0; i < 20; i++) {
        std::cout << rand() % 10 + 1 << std::endl;
    }
    return 0;
}

关于函数如何工作的更一般问题通常在所述函数的文档中得到解答。没有太多麻烦你应该能够通过谷歌搜索“c ++ rand”来找到它。再次对勺子喂食过多是一种伤害,但如果您对文档有真正的问题,可以在这里修改您的问题。