我需要使用(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;
}
答案 0 :(得分:2)
来自维基百科:
如果Z1,...,Zk是独立的,则标准正态随机变量 它们的平方和按照卡方分布 分配
因此您可能希望生成k个标准正态变量并计算它们的总和平方。