#include <iostream> #include <cstdlib> #include <cmath> #include <ctime> using namespace std; /** Sets the seed of the random number generator. */ void rand_seed() { int seed = static_cast<int>(time(0)); srand(seed); } /** Compute a random floating point number in a range @param a the bottom of the range @param b the top of the range @return a random floating point number x, a <= x and x <= b */ double rand_double(double a, double b) { return a + (b - a) * rand() * (1.0 / RAND_MAX); } /** Converts an angle from degree to radian. @param alpha the angle in degrees @return the angle in radian */ double deg2rad(double alpha) { const double PI = 3.141592653589793; return alpha * PI / 180; } int main() { int NTRIES = 10000; int hits = 0; rand_seed(); for (int i = 1; i <= NTRIES; i++) { double ylow = rand_double(0, 2); double angle = rand_double(0, 180); double yhigh = ylow + sin(deg2rad(angle)); if (yhigh >= 2) hits++; } cout << "Tries / Hits = " << NTRIES * (1.0 / hits) << "\n"; return 0; }