C++ Bc. 25: Porovnání verzí
m (+kategorie programovani) |
mBez shrnutí editace |
||
Řádek 1: | Řádek 1: | ||
;[http://en.wikipedia.org/wiki/Buffon%27s_needle Buffonův problém házení jehlou] | |||
Na rovnoběžné přímky v rovině ležící od sebe ve stejných vzdálenostech <math>d</math> házíme jehlu délky <math>\ell | Na rovnoběžné přímky v rovině ležící od sebe ve stejných vzdálenostech <math>d</math> házíme jehlu délky <math>\ell</math>. Pro jednoduchost budeme předpokládat, že | ||
<math>\ell < d | <math>\ell < d</math>, 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 <math>(x, \varphi) | Polohu bodu středu jehly můžeme charakterizovat bodem <math>(x, \varphi)</math>, kde <math>x</math> je vzdálenost středu jehly od levé rovnoběžky a <math>\phi</math> je úhel, který jehla svírá s rovnoběžkami. | ||
Jehla protne jednu z rovnoběžek tehdy, když <math>0 \le x \le {1\over2}\ell \sin \varphi</math> | Jehla protne jednu z rovnoběžek tehdy, když <math>0 \le x \le {1\over2}\ell \sin \varphi</math> | ||
nebo <math> d - {1\over2}\ell \sin \varphi \le x \le d | nebo <math> d - {1\over2}\ell \sin \varphi \le x \le d</math>. | ||
Teoretická hodnota | Teoretická hodnota pravděpodobnosti, že jehla protne jednu z rovnoběžek je | ||
<math>{2\ell\over\pi d}.</math> Při dostatečně velkém počtu pokusů bychom mohli takto odhadnout | <math>{2\ell\over\pi d}.</math>. Při dostatečně velkém počtu pokusů bychom mohli takto odhadnout | ||
přibližnou hodnotu čísla <math>\pi | přibližnou hodnotu čísla <math>\pi</math>. | ||
[ [http://en.wikipedia.org/wiki/Alfr%C3%A9d_R%C3%A9nyi ''Alfréd Rényi:] Teorie pravděpodobnosti, Akademia, Praha 1972'' ] | [ [http://en.wikipedia.org/wiki/Alfr%C3%A9d_R%C3%A9nyi ''Alfréd Rényi:] Teorie pravděpodobnosti, Akademia, Praha 1972'' ] | ||
Napište simulační program, který ověří výše uvedené tvrzení. | Napište simulační program, který ověří výše uvedené tvrzení. | ||
Řádek 26: | Řádek 25: | ||
kde funkce <tt>time()</tt> je definována v knihovně <tt><ctime></tt>. | kde funkce <tt>time()</tt> je definována v knihovně <tt><ctime></tt>. | ||
'''Příklad simulace''' | '''Příklad simulace''' |
Verze z 10. 10. 2006, 21:52
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