C++ Bc. 25
Na rovnoběžné přímky v rovině ležící od sebe ve stejných vzdálenostech házíme jehlu délky . Pro jednoduchost budeme předpokládat, že , takže jehla protne nejvýše jednu přímku. Zajímá nás, jaká je pravděpodobnost, že jehla přímku skutečně protne.
Polohu bodu středu jehly můžeme charakterizovat bodem , kde je vzdálenost středu jehly od levé rovnoběžky a je úhel, který jehla svírá s rovnoběžkami.
Jehla protne jednu z rovnoběžek tehdy, když nebo .
Teoretická hodnota pravděpodobnosti, že jehla protne jednu z rovnoběžek je . Při dostatečně velkém počtu pokusů bychom mohli takto odhadnout přibližnou hodnotu čísla . [ Alfréd Rényi: Teorie pravděpodobnosti, Akademia, Praha 1972 ]
Napište simulační program, který ověří výše uvedené tvrzení.
Pro generování rovnoměrného rozdělení čísel z intervalu <0,1) použijte výraz
rand()/(RAND_MAX + 1.0)
kde funkce rand() a konstanta RAND_MAX jsou definovány v knihovně <cstdlib>. Aby program poskytoval při každém volání jinou simulaci, inicializujte generátor pseudonáhodných čísel voláním
srand(time(0));
kde funkce time() je definována v knihovně <ctime>.
Příklad simulace
d = 1 l = 0.7 1 : 0.4456 ~ 0.4479 0.4479 2 : 0.4456 ~ 0.4464 0.4471 3 : 0.4456 ~ 0.4456 0.4466 4 : 0.4456 ~ 0.4450 0.4462 5 : 0.4456 ~ 0.4448 0.4459 6 : 0.4456 ~ 0.4481 0.4463 7 : 0.4456 ~ 0.4458 0.4462 8 : 0.4456 ~ 0.4465 0.4463 9 : 0.4456 ~ 0.4466 0.4463 10 : 0.4456 ~ 0.4441 0.4461