C 什么是rand()%范围+;降低
我现在正在学习C,我不明白这行代码中的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++) {
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的“什么是范围+较低的?”请注意%
运算符的优先级高于+
运算符。