使用卡方分布c ++生成随机数

时间:2011-11-28 14:34:41

标签: c++ boost random

我需要使用(boost)tr1 c ++中的卡方分布生成表示用户活动的随机数。关于如何开始的任何示例或帮助?


我尝试了以下代码:

int main (){
    std::tr1::mt19937 eng; // a core engine class 
                           //mt19937 is a very fast random number generator algorithm 
    eng.seed(time(0));   //each engine has a seed method 

    //file to store seed 
    std::tr1::chi_squared_distribution<double> chdist(5.0); 
    cout<<endl<<"CHIDIST"<<endl<<"================"<<endl; 

    for (int i = 0; i<50; ++i) 
    { 
         Act.push_back(chdist(eng)*0.1); 
         int rounded = ((int)(chdist(eng) * 100 + .5) / 100.0);         
         Act.push_back(rounded*0.1); cout<<Act[i]<< endl; 
    }

     return 0;   
}

1 个答案:

答案 0 :(得分:2)

来自维基百科:

  

如果Z1,...,Zk是独立的,则标准正态随机变量   它们的平方和按照卡方分布   分配

因此您可能希望生成k个标准正态变量并计算它们的总和平方。