Template:ROOT/Exercises/Trying Interactive ROOT
Exercise
On an interactive ROOT session: Fill an array of 100 000 000 64Bit floating point numbers of the machine independent ROOT type Double_t with random numbers. Compute the mean of the array and print it to the console. Note the computation time.
Hint: You can get random real numbers by creating a pointer to an instance of the TRandom class. (The constructor takes one arbitrary integer as initialization.) Then you can call the method TRandom::Rndm() to get a simple pseudo random number uniformly distributed between 0 and 1. For example:
TRandom *R = new TRandom(time(0)); // create a pointer to a new instance of TRanom in the heap
cout << R->Rndm() << endl;
Solution
| root [0] Int_t nums = 100000000; // random numbers to generate |
| root [1] TRandom *R = new TRandom(time(0)); |
| root [2] Double_t *seed = new Double_t[nums]; |
| root [3] for (Int_t i = 0; i < nums; i++) { |
| end with '}', '@':abort > seed[i] = R->Rndm(); } |
| root [4] // some 10-20 seconds later... |
| root [5] Double_t mean = 0.0; |
| root [6] for (Int_t i = 0; i < nums; i++) { // make use of pressing "uparrow" to recall the input of line 3 |
| end with '}', '@':abort > mean += seed[i]; } |
| root [7] // some 5-15 seconds later... |
| root [9] cout << "mean = " << mean << endl; |
Last modified on 13 December 2010, at 21:52