#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double ran_expo(lambda){
double u;
u = rand()/(RAND_MAX + 1.0);
return -log(1- u)/lambda;
}
我正在使用此函数(我不把这些代码的其他部分放在这里)生成指数分布的随机数lambda = 0.05
。 (概率密度函数是lambda * exp(-lambda * x)
)。生成指数分布的随机数
但是,我总是会得到非常小的数字,例如0.000041
或类似1.#INF00
(这是什么?)。
实际上,对于使用lambda = 0.05
的指数分布,生成的数字应该相当大,即大多数不会太远。我的结果非常奇怪。另外,精度不够理想,仅为10 ^( - 6)。我试过long double
,但它仍然是这样的。
我在Windows下使用DEV C++。
什么是'lambda'的类型? –
lambda是双重的 – Damien
lambda在你的代码中不是双重的 –