{ gROOT->SetStyle("Plain"); TRandom3 rndm; rndm.SetSeed(123456); TH1D expo("expo", "Exponential", 100, 0, 20); for(int i = 0; i != 10000; ++i) { double r = rndm.Uniform(); double x = - 3.5 * log(r); expo.Fill(x); } double twoPi = 2*M_PI; TH1D sin2("sin2", "Sine-squared", 100, 0, twoPi); for(int i = 0; i != 10000; ++i) { double r, x; do { x = rndm.Uniform(0, twoPi); r = rndm.Uniform(); } while(r > pow(sin(x),2)); sin2.Fill(x); } TH1D sinexp("sinexp", "Exp times sine-squared", 100, 0, 20); for(int i = 0; i != 10000; ++i) { double r, x; do { r = rndm.Uniform(); x = - 3.5 * log(r); r = rndm.Uniform(); } while(r > pow(sin(x),2)); sinexp.Fill(x); } gStyle->SetOptLogy(0); TCanvas c1; expo.Draw(); c1.SaveAs("03-expo.eps"); sin2.Draw(); c1.SaveAs("03-sin2.eps"); sinexp.Draw(); c1.SaveAs("03-sinexp.eps"); gStyle->SetOptLogy(1); TCanvas c2; expo.SetLineColor(kBlue); expo.SetLineWidth(2); expo.Draw(); c2.SaveAs("03-expo-logy.pdf"); sinexp.Draw(); c2.SaveAs("03-sinexp-logy.pdf"); }