【问题标题】:generate random number using chi square distribution c++使用卡方分布c ++生成随机数
【发布时间】:2011-11-29 02:32:06
【问题描述】:

我需要在 (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;   
}

【问题讨论】:

  • 这里有另一个相关帖子stackoverflow.com/questions/795972/…
  • 我尝试了以下代码: int main (){std::tr1::mt19937 eng; // 核心引擎类 //mt19937 是一个非常快速的随机数生成算法 eng.seed(time(0)); //每个引擎都有一个种子方法 //file 来存储种子 std::tr1::chi_squared_distribution chdist(5.0); cout
  • 您应该将您的代码作为问题编辑,而不是评论。使用代码图标进行格式化。

标签: c++ boost random


【解决方案1】:

来自维基百科:

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

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

【讨论】:

  • 我需要在c++中实现卡方分布来生成随机用户活动。
  • 有很多方法可以生成正态分布变量(查看此线程:stackoverflow.com/questions/2325472/…)。之后,您可以通过计算它们的平方和来轻松生成卡方分布。
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 2011-03-31
  • 2018-06-22
  • 1970-01-01
  • 2014-09-21
  • 2012-09-18
  • 2014-06-24
  • 2013-11-09
相关资源
最近更新 更多