因此,这适用于1到100之间的10个随机整数:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
for (int i = 0; i < 10; i++) {
int random = rand() % 100 + 1;
printf("The random integer is: %d\n", random);
}
}
但是,如果我想随机产生该范围内的双打,我将如何处理?我尝试将random
的声明更改为double
,并在RHS上使用了强制转换,如下所示:
double random = (double) rand() % 100 + 1;
我希望这个问题能得到很好的阐述。
答案 0 :(得分:1)
您正在做的事情会“起作用”,但可能并非您打算的那样。关键是定义 random double 的意思。通常,我们的意思是在系统允许的最大精度范围内加倍。
幸运的是,我们知道rand
返回的数字介于0和RAND_MAX
之间,无论该值是多少。 (过去通常选择32767。)我们可以将此限制除以生成0到1之间的值,然后可以将其缩放到所需的任何范围,例如:
double random = ((double) rand() / RAND_MAX) * (100 - 1) + 1;
如果您想要一个介于1.5到9之间的值,则可以采用非常相似的方式进行操作:
double random = ((double) rand() / RAND_MAX) * (9 - 1.5) + 1.5;