gpt4 book ai didi

c - 如何生成0到1之间的随机数?

转载 作者:太空狗 更新时间:2023-10-29 16:26:51 26 4
gpt4 key购买 nike

我想在 (0,1) 之间生成随机数。我正在尝试以下操作:

double r2()
{
return((rand() % 10000) / 10000.0);
}

int SA()
{
double u;
u = r2();
}

但它并没有产生预期的结果。我该如何解决?

最佳答案

在您的版本中,rand() % 10000 将产生一个介于 09999 之间的整数。由于 RAND_MAX 可能小到 32767,并且由于它不能被 10000 整除并且相对于 10000 来说并不大,因此结果的“随机性”会有很大的偏差,而且最大值将是 0.9999,而不是 1.0 ,并且您不必要地将您的值限制在小数点后四位。

这是一个简单的算法,一个随机数除以最大可能的随机数将产生一个从 0 到 1 的数字,同时利用 RNG 的全分辨率和分布

double r2()
{
return (double)rand() / (double)RAND_MAX ;
}

如果有意排除 1.0,则使用 (double)rand()/(double)((unsigned)RAND_MAX + 1)

关于c - 如何生成0到1之间的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6218399/

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