gpt4 book ai didi

c - 如何生成 _ _ _ 形式的随机数。 _ _ _ _(C语言)

转载 作者:行者123 更新时间:2023-11-30 19:11:25 29 4
gpt4 key购买 nike

过去几天我一直试图解决这个问题,但我做不到。我正在尝试生成 _ _ _ 形式的随机数。 _ _ _ _

小数点前 3 位,然后是 4 位小数。

非常感谢任何帮助。谢谢,

院长

最佳答案

您发布的代码有两个小问题。

首先是 rand() % 9999999 只能返回 0 到 9999998 之间的值。您可能想写 rand() % 10000000

另一个问题是 rand() % 10000000 会给你带来轻微偏差的结果。我会尝试解释原因。

rand() 函数返回 0 到 RAND_MAX 之间的值,大多数情况下其值为 0x7fffffff 或 2147483647。 (如果您使用的是 Visual Studio,那么它只是 0x7fff,但我们希望情况并非如此。)

由于 RAND_MAX 不是 10^7 的精确倍数,因此您选择高于 RAND_MAX % 10000000(即 7483647)的随机值的可能性会稍低一些。这意味着您的结果将稍微偏向 0-7483647 范围。

要解决此问题,请计算高于目标范围上限的 2 的下一个幂的 rand() 模,如果结果太高,则丢弃结果。计算开销可以忽略不计。

下面是一些解决问题的代码:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int main() {
int number;
double p;
srand(time(NULL));
while (1) {
number = rand() % 16777216; /* Next power of 2 higher than 10^7 */
if (number < 10000000) break;
}
p = number / 10000.0;
printf("%08.4f\n", p);
return 0;
}

关于c - 如何生成 _ _ _ 形式的随机数。 _ _ _ _(C语言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40165106/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com