{ // // Wuerfel Simulation und Demonstration des zentralen Grenzwertsatzes // gROOT->Reset(); gStyle->SetOptStat(kFALSE); gStyle->SetOptFit(); gStyle->SetStatW(0.2); gStyle->SetStatH(0.2); gStyle->SetStatStyle(1001); TCanvas *c1; TPad *padup, *padlow; int n=0; int n6=0; int n2=0,n3=0,n10=0,n40=0; int sum=0; float av = 0.; int j=10; int number_of_points=1000000; // create canvas c1 = new TCanvas("dice","dice",100,10,1400,800); c1->SetGrid(); c1->Divide(1,2); padup = new TPad("padup","Upper Pad",0.0,0.5,1.0,1.0); padup->Divide(1,1); padup->Draw(); padlow = new TPad("padlow","Lower Pad",0.0,0.0,1.0,0.5); padlow->Divide(4,1); padlow->Draw(); // gSystem->Sleep(1000); // create random object TRandom *myRnd=new TRandom3(0); // pad for text and plot // test and statistics histograms TProfile* hnwurf = new TProfile("hnwurf","Fraction of 6 vs number of throws",number_of_points-1,1.,number_of_points); TH1F* hsum1 = new TH1F("hsum1","1 die",6,0.5,6.5); TH1F* hsum2 = new TH1F("hsum2","Sum of 2 dice",11,1.5,12.5); TH1F* hsum3 = new TH1F("hsum3","Sum of 3 dice",16,2.5,18.5); TH1F* hsum10 = new TH1F("hsum10","Sum of 10 dice",51,9.5,60.5); TH1F* hsum40 = new TH1F("hsum40","Sum of 40 dice",201,39.5,240.5); for(int i=1;i<=number_of_points;++i) { n = (int)(myRnd->Rndm()*6.+1.); if (n==6) n6++ ; av = (float)n6/(float)i; sum = sum+n; n2=n2+n; n3=n3+n; n10=n10+n; n40=n40+n; if (i%2==0) { hsum2->Fill(n2); n2=0; } if (i%3==0) { hsum3->Fill(n3); n3=0; } if (i%10==0) { hsum10->Fill(n10); n10=0; } if (i%40==0) { hsum40->Fill(n40); n40=0; } hnwurf->Fill(i,av); hsum1->Fill(n); // j=1; if (i+1>10) j=10; if (i+1>100) j=100; // if (i+1>1000) j=1000; if (i+1>10000) j=10000; if (i+1>100000) j=100000; // if (i+1>200000) j=200000; // if (i+1>400000) j=400000; // if (i+1>1000000) j=1000000; if (i+1cd(1); gPad->SetLogx(); hnwurf->SetMaximum(1.); hnwurf->SetMinimum(0.); hnwurf->GetXaxis()->SetLabelSize(.05); hnwurf->GetYaxis()->SetLabelSize(.05); hnwurf->GetXaxis()->SetTitleSize(.05); hnwurf->GetYaxis()->SetTitleSize(.05); hnwurf->GetXaxis()->SetTitle("Number of throws"); hnwurf->GetYaxis()->SetTitle("Relative fraction of 6"); hnwurf->Draw(); padlow->cd(1); hsum1->SetMinimum(0.); hsum1->GetXaxis()->SetLabelSize(.05); hsum1->GetYaxis()->SetLabelSize(.05); hsum1->GetXaxis()->SetTitleSize(.05); hsum1->GetYaxis()->SetTitleSize(.05); hsum1->GetXaxis()->SetTitle("Sum"); hsum1->GetYaxis()->SetTitle("Rate"); //hsum1->Fit("gaus"); hsum1->Draw(); padlow->cd(2); hsum2->SetMinimum(0.); hsum2->GetXaxis()->SetLabelSize(.05); hsum2->GetYaxis()->SetLabelSize(.05); hsum2->GetXaxis()->SetTitleSize(.05); hsum2->GetYaxis()->SetTitleSize(.05); hsum2->GetXaxis()->SetTitle("Sum"); hsum2->GetYaxis()->SetTitle("Rate"); hsum2->Fit("gaus"); hsum2->Draw(); padlow->cd(3); hsum10->SetMinimum(0.); hsum10->GetXaxis()->SetLabelSize(.05); hsum10->GetYaxis()->SetLabelSize(.05); hsum10->GetXaxis()->SetTitleSize(.05); hsum10->GetYaxis()->SetTitleSize(.05); hsum10->GetXaxis()->SetTitle("Sum"); hsum10->GetYaxis()->SetTitle("Rate"); hsum10->Fit("gaus"); hsum10->Draw(); padlow->cd(4); hsum3->SetMinimum(0.); hsum3->GetXaxis()->SetLabelSize(.05); hsum3->GetYaxis()->SetLabelSize(.05); hsum3->GetYaxis()->SetTitleSize(.05); hsum3->GetXaxis()->SetTitleSize(.05); hsum3->GetXaxis()->SetTitle("Sum"); hsum3->GetYaxis()->SetTitle("Rate"); hsum3->Fit("gaus"); hsum3->Draw(); hsum40->SetMinimum(0.); hsum40->GetXaxis()->SetLabelSize(.05); hsum40->GetYaxis()->SetLabelSize(.05); hsum40->GetYaxis()->SetTitleSize(.05); hsum40->GetXaxis()->SetTitleSize(.05); hsum40->GetXaxis()->SetTitle("Sum"); hsum40->GetYaxis()->SetTitle("Rate"); hsum40->Fit("gaus"); hsum40->Draw(); gPad->Modified(); gPad->Update(); gSystem->ProcessEvents(); } } char *s = new char[1]; gets(s); TCanvas* C = new TCanvas("C","C"); C->Divide(2,2); C->cd(1); hsum2->SetMinimum(0.); //hsum2->Fit("gaus"); hsum2->Draw(); C->cd(2); hsum3->SetMinimum(0.); //hsum3->Fit("gaus"); hsum3->Draw(); C->cd(3); hsum10->SetMinimum(0.); //hsum10->Fit("gaus"); hsum10->Draw(); C->cd(4); hsum40->SetMinimum(0.); //hsum40->Fit("gaus"); hsum40->Draw(); gPad->Modified(); gPad->Update(); gSystem->ProcessEvents(); // app->Run(); }