【发布时间】:2020-12-18 11:09:42
【问题描述】:
我现在正在学习 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);
【问题讨论】:
-
你知道
%运算符是什么吗? -
This 帖子解释了
%运算符的作用。将模数 (%) 与+结合使用可实现printf语句中的内容。 -
rand() 函数会返回一个随机数。这个数字可以很大也可以很小。 % 这个操作符执行 mod 操作。 (rand () % range) 返回此随机数除以范围的余数。所以你得到一个介于 0 和 (range-1) 之间的随机数,你添加到这个数字的任何东西都会给你下限。
-
请解释一下你有什么困惑,因为我的印象是“将在...上下之间生成...随机数”问题包含了答案。
-
假设你想要一个在
lower=2、upper=5范围内的随机数,所以你想要得到2、3、4或5。这是四种可能性,你从upper - lower + 1得到=4。接下来,rand() % 4给出一个 0..3 范围内的数字,最后将其添加到lower以给出四种可能性之一。
标签: c