如何根据概率密度函数生成随机分布


问题描述

根据 y=cos(theta)概率函数生成随机抽样

解决办法

对概率密度函数积分归一化得到概率函数,然后采用概率函数反函数生成随机分布;

代码实现

void GenerateDirection()
{
  TRandom3 rndm;
  
  TH1D *h1 = new TH1D("","",400,0.,3.1415/2);
  for(int i=0;i<100000;i++)
    {
      double y=rndm.Uniform();
      double Theta=asin(y);
      h1->Fill(Theta);
    }
  h1->Draw();
}

结果


猜你喜欢

转载自blog.csdn.net/baidu_29950065/article/details/78848037