在C中生成1到100之间的随机双

时间:2020-09-20 16:08:35

标签: c

因此,这适用于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;

我希望这个问题能得到很好的阐述。

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;