- #include <cmath>
- #include<iostream>
- #include <stdio.h>
- #include <stdlib.h>
- #include <TRandom1.h>
-
-
- using namespace std;
-
- int main(int argc, char **argv)
- {
- double h[3][4]={ {0.4, 0.2, 0.3,0.1},{0.1,0.4,0.3,0.2},{0.5,0.3,0.1,0.1}};
- double a[3]={1.5,-1.0,0.7};
- int j = atoi(argv[1]);
- int original =j;
- int n_of_samples = atoi(argv[2]);
- TRandom1 *rand = new TRandom1(2131);
- double result =0;
- double result2=0;
- for(int i =0;i< n_of_samples;++i)
- {
- int last;
- j=original;
- while(1)
- {
- last =j;
- double tmp =rand->Rndm();
- if(tmp<h[j-1][0]) j=0;
- else if(tmp > h[j-1][0] && tmp<h[j-1][1]+h[j-1][0]) j=1;
- else if(tmp > h[j-1][1]+h[j-1][0] && tmp<h[j-1][2]+h[j-1][1]+h[j-1][0]) j=2;
- else if(tmp > h[j-1][2]+h[j-1][1]+h[j-1][0] && tmp<h[j-1][3]+h[j-1][2]+h[j-1][1]+h[j-1][0]) j=3;
- else
- {
- cout<<"rand= "<<tmp<<endl;
- cout<<h[j-1][3]+h[j-1][2]+h[j-1][1]+h[j-1][0]<<endl;
- }
- if(j==0) break;
-
- }
-
- result+=a[last-1]/(double)(h[last-1][0]);
- //errors
-
- }
-
- cout<<result/ n_of_samples<<endl;
-
-
- return 1;
- }