gpt4 book ai didi

c - c中(0,1)的随机数

转载 作者:行者123 更新时间:2023-12-01 04:41:56 26 4
gpt4 key购买 nike

我想要一个指数分布的变量,这样做似乎非常有效:

double exp_variate(double lambda){
return -log(my_random_function())/lambda;
}

其中 my_random_function 给出双 x,所以 0 < x < 1 (严格)意味着我永远不会得到 -log(0)0 .我如何获得不包括 0 和 1 值的随机数。我敢肯定之前有人会问过这个问题,但我看不到。此外,我对其他生成指数分布值的方法持开放态度。

编辑:> 到 <

最佳答案

大概你的意思是0 < x < 1 ,因为一个数不能同时小于 0 和大于 1。

在那种情况下,我可能会这样做:

double my_random_function() { 
return (rand() + 1.0) / (RAND_MAX+2.0);
}

C 的随机数生成器通常生成从 0 到 RAND_MAX 的数字。这会将随机数生成器生成的值加一,因此它不能生成 0。除以 RAND_MAX+1 将得到从 1/RAND_MAX 到 (RAND_MAX+1)/(RAND_MAX+1) 的结果,因此后者是 1。因为我们想避免这种情况,所以我们使用 (RAND_MAX+2),所以我们通过 (RAND_MAX+1)/(RAND_MAX+2) 得到 1.0/(RAND_MAX+2),这将略大于 0.0 到略小于 1.0。

关于c - c中(0,1)的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11769779/

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