//generator nahodnych cisel z rozdeleni exp + norm #define nmax 1000 //kolik hodnot #define tau 4 //parametr exponencialniho rozdeleni (doba zivota) #define mu 10 //ocekavana hodnota Normalniho rozdeleni #define sigma 2 //standardni odchylka normalniho rozdeleni #define P_exp 0.75 //pravdepodobnost ze to bude exponencialni rozdeleni #define nbins 10 //pocet binu int simulate() { //FILE *fout; //soubor kam se zapisi data double x[nmax]; double branch; double x_min,x_max; //minimalni a maximalni hodnota - meze histogramu TRandom3 *gRandom = new TRandom3(0); // vytvori generator nahodnych cisel; bez nuly je vzdy stejny seed //fout=fopen("data.dat","w"); //otevreni souboru for (int i = 0; i < nmax; ++i) { //branch=gRandom->Rndm(); //if(branchExp(tau); //generovani nahodneho cisla E(tau) //else x[i]=gRandom->Gaus(mu,sigma); //generovani nahodneho cisla N(mu,sigma) x[i]=gRandom->Rndm(); //generovani nahodneho cisla 0 az 1 if(i==0) x_min=x_max=x[i]; //aby nebyly nedefinovane if(x[i]x_max) x_max=x[i]; //fprintf(fout,"%lf\n",x[i]); //zapis dat do souboru } printf("min value: %lf\n",x_min); printf("max value: %lf\n",x_max); //TH1D *hist = new TH1D("data", "exp+gauss", nbins, x_min, x_max); TH1D *hist = new TH1D("data", "Random numbers", nbins, x_min, x_max); for (int i = 0; i < nmax; ++i) hist->Fill(x[i]); //naplneni histogramu TCanvas *c1 = new TCanvas("c1", "histogram",5,5,800,600); //definice okna hist->Draw(); //nakresli histogram //fclose(fout); return(0); }