5000次的随机取样,做高斯,朗道,指数和均匀分布,代码如下,但是我运行不出来,不能生成图,还请大家看看,不知道是代码有问题还是咋回事
void xxm(){
//函数名必须与文件名一致
//定义直方图
TH1F *h1=new TH1F("h1","Gauss", 100,-5,5);
//直方图名称 //100为bin即有100个小区间 -5到5为区间范围
TH1F *h2=new TH1F("h2","Landau", 100,-8,20);
TH1F *h3=new TH1F("h3","exponent", 100,0,5);
TH1F *h4=new TH1F("h4","uniformity",100,0,1);
//设置种子 要求参数设为1
gRandom->SetSeed(1);
//填充
int N=5000;//填充的次数
for(int i=0;i<N;i++){
h1->Fill( gRandom->Gaus(0,1) );//调用随机高斯分布
h2->Fill( gRandom->Landau(0,1) );//调用随机朗道分布
h3->Fill( gRandom->Exp(1) );//调用随机指数分布
h4->Fill( gRandom->Uniform(0,1) );//调用均匀分布
}
//set line color
h1->SetLineColor(1);
h1->SetFillColor(2);
h2->SetLineColor(3);//数字为参数,不同的参数颜色不同
h2->SetFillColor(4);
h3->SetLineColor(5);
h3->SetFillColor(6);
h4->SetLineColor(7);
h4->SetFillColor(8);
//set line width
h1->SetLineWidth(2);
h2->SetLineWidth(2);
h3->SetLineWidth(2);
h4->SetLineWidth(2);
//define add
/* auto sum = new THStack("","");
sum->Add(h3);
sum->Add(h1);
*/
//Canvas
TCanvas *c1 = new TCanvas("c1","A Canvas",10,10,800,800);//定义画布 直方图可以放在画布上
c1->Divide(2,2);//把画布分为四个区域
c1->cd(1);//进入一区
c1->GetPad(1)->SetGridy();
h1->Draw();//把h1画在一区
c1->cd(2);//进入二区
c1->GetPad(2)->SetGridy();
h2->Draw();//画图
c1->cd(3);
c1->GetPad(3)->SetGridy();
h3->Draw();
c1->cd(4);
c1->GetPad(4)->SetGridy();
h4->Draw();
//save as .gif
c1->SaveAs("Canvas.gif");
}