C++ Bc. 43 cpp
// kruhova parcela ma polomer 1 se stredem v bode (1, 1) // koze je uvazana na provaze delky r=1 v bode (1, 0) // nahodne vygenerovany bod na zahrade // true/false - koza na nej dosahne/nedosahne bool bod() { const double r = 1; // pro r=1.1583... spase koza 50% plochy double x, y, dx, dy, dx2; do { x = 2.0*rand()/(RAND_MAX + 1.0); y = 2.0*rand()/(RAND_MAX + 1.0); dx = x - 1.0; dy = y - 1.0; dx2 = dx*dx; } while (dx2 + dy*dy > 1.0); // bod musi lezet na parcele return dx2 + y*y <= r*r; // koza dosahne na bod } int main() { using namespace std; srand(time(0)); const int M = 10; const int N = 100000; int total = 0; for (int m=1; m<=M; m++) { int priznive = 0; for (int n=1; n<=N; n++) { if (bod()) priznive++; } total += priznive; cout << setw(3) << m << setprecision(2) << fixed << setw(9) << 100.0*priznive/N << setprecision(2) << fixed << setw(9) << 100.0*total/m/N << endl; } }
Příklad výstupu:
1 39.21 39.21 2 39.06 39.13 3 39.07 39.11 4 38.86 39.05 5 39.04 39.05 6 38.95 39.03 7 38.96 39.02 8 39.10 39.03 9 39.29 39.06 10 39.04 39.06
[ Zpět ]