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 ]