什么是“ rand()%11”?这与“ rand()%10 + 1”之间的区别是什么?

时间:2019-10-12 22:44:30

标签: c

我知道rand()生成一个随机数,而%运算符返回除法的其余部分,但是我不明白的是为什么我们必须在这里使用它,为什么我们不能直接给出一个最大数例如十个

2 个答案:

答案 0 :(得分:6)

如果您尝试使用示例,可​​以理解% 11%10 +1之间的区别:

%11给出11个可能的答案:0,1,2,3,4,5,6,7,8,9,10

%10 + 1给出10个可能的答案:1,2,3,4,5,6,7,8,9,10

至于为什么您不能直接告诉rand()您想要的最大值...那么这不是函数的编码方式。当然,您可以自由编写带有最大值参数的内容。

答案 1 :(得分:1)

rand() % 11返回0到10之间的随机数; rand() % 10 + 1返回0到9之间的数字,然后加1,得到1到10之间的数字。

rand()之所以不能取最大值,部分原因是无法保证rand()返回的最大数字将是-varies based on implementation(但始终保证为至少32767)。您可以在常量RAND_MAX中找到确切的值。