【发布时间】:2019-04-28 18:12:08
【问题描述】:
我正在学习 C 中的 rand() 函数,因为我想用它来生成一个范围内的随机数。但是,我对以下算法的一部分有疑问。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
const MAX = 20, MIN = 1;
srand(time(NULL));
int randNumber = rand() % (MAX - MIN + 1) + MIN;
printf("%d", randNumber);
// yeu cau nhap so
int duDoan;
printf("Moi ban du doan con so:");
scanf("%d", &duDoan);
// chay vong lap kiem tra
while(duDoan != randNumber) {
printf("Ban da sai. Moi nhap lai:");
scanf("%d", &duDoan);
}
printf("Ban da nhap dung. Dap an la: %d ", randNumber);
return 0;
}
让我困惑的是为什么我们必须在这一行添加+ MIN:
rand() % (MAX - MIN + 1) + MIN;
如果我离开它,结果会是什么?
【问题讨论】:
-
您当然可以运行代码并进行试验。如果 rand() % 50 给你一个 0 到 49 之间的数字,如果你想要一个 30 到 79 之间的数字,你会怎么做?
-
减法告诉你在 0.. 范围内需要多少个数字,当你将随机数添加到
MIN然后 voilà 你有一个想要的数字范围。 -
rand ()% (MAX - MIN + 1)提供什么,你需要做什么才能获得包含[MIN...MAX]范围内的数字? -
附带说明,Stack Overflow 是一个英文网站。翻译代码中的变量名称和字符串将不胜感激。
-
@JL2210 :我认为我们可以做到。要求重写有问题的代码有点不合理,并且可能会引入与原始代码无关或与问题无关的错误。我宁愿发布的代码是问题所指的确切代码。在这种情况下,有问题的代码部分是在任何情况下都是英文的。