生成属于指数分布的随机数

时间:2015-03-24 23:09:43

标签: c++ random logarithm exponential

我试图生成属于指数分布的随机值。

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <iostream>
#include <math.h>

using namespace std;

int main(){
    double x;
    double random;
    double one=1.0;
    for(int i=0; i<1000; i++){
        x = ((double) rand() / (RAND_MAX));
        cout << random <<endl;
        x=log(one-random)/(-3);
        cout<< x<< endl;
        cout<< "__"<<endl;
    }
    return 0;
}

我正在使用此帖子x = log(1-u)/(−λ),我已在此帖中阅读Pseudorandom Number Generator - Exponential Distribution

但我看到的输出就是这个:

3.90272e-319
0
__
3.90272e-319
0
__
3.90272e-319
0
__
3.90272e-319
0
__
and so on

始终打印随机数的相同值,并且对数的结果始终为0,我无法理解。

1 个答案:

答案 0 :(得分:2)

您正在使用random未初始化,因此未定义它将保留的值。并且你永远不会改变它的值,所以循环的每次迭代都会表现相同。