C 什么是rand()%范围+;降低

C 什么是rand()%范围+;降低,c,C,我现在正在学习C,我不明白这行代码中的rand()%range+lower是什么意思 printf("I will generate 10 random numbers between %d and %d . . .\n", lower, upper); int range = upper - lower+1; for(int i = 0; i <= 10; i++) {

我现在正在学习C,我不明白这行代码中的
rand()%range+lower
是什么意思

printf("I will generate 10 random numbers between %d and %d . . .\n", lower, upper);

int range = upper - lower+1;                        
for(int i = 0; i <= 10; i++) {                      
    int number = rand() % range + lower;            
    printf("%d\t", number);
printf(“我将生成10个介于%d和%d之间的随机数…\n”,下,上);
整数范围=上限-下限+1;

对于(inti=0;i这是一个穷人的线性随机发生器


它确实是随机的,因为它是从返回一个随机整数的
rand()
馈送的,通过构造,该值>=较低,请阅读大约%的运算符。它是模除。 模除是一个很好的工具,可以将最大范围统一映射到最短范围(在您的例子中是rand()%range)。您只需添加范围的开始,即可将所有值移动到正确的位置。
Code rand()%range+lower是从A、B范围中获取随机数的标准C惯用语。您可以找到更多惯用语,例如带有(A、B)范围或范围的浮点数。

您知道%运算符是什么吗?post解释了%运算符的作用。模数(%的使用)与
+
结合使用可实现
printf
语句中的内容。rand()函数将返回一个随机数。该数字可以是非常大的数字,也可以是非常小的数字。%n此运算符执行mod操作。(rand()%范围)返回此随机数除以范围的剩余部分。所以您得到一个介于0和(范围-1)之间的随机数,您添加到该数字上的任何内容都会给出下限。请解释什么让您感到困惑,因为我得到的印象是“将在…下限和上限之间生成…随机数”问题包含答案。假设您想要一个范围为
lower=2
upper=5
的随机数,那么您想要得到2、3、4或5。这是四种可能性,您可以从
upper-lower+1
=
4
。接下来,
rand()%4
给出了一个0..3范围内的数字,最后你将其添加到
lower
中,给出四种可能性中的一种。这只是我教授的一个练习,处理随机数。但我不明白range+lower背后的意思。它不是
range+lower
。它是
(rand()%range)+lower
。还有OP的“什么是
范围+较低的
?”请注意
%
运算符的优先级高于
+
运算符。