问题描述
根据 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();
}
结果