#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在你的代碼中不是雙重的 –