3.1. Przykłady
Moje wykłady ograniczają się do zagadnień leżących w kompetencji rachunku prawdopodobieństwa i statystyki. U podstaw symulacji stochastycznych leży generowanie „liczb pseudo-losowych” naśladujących zachowanie zmiennych losowych o rozkładzie jednostajnym. Jak to się robi, co to jest „pseudo-losowość”, czym się różni od „prawdziwej losowości”? To są fascynujące pytania, którymi zajmuje się: teoria liczb, teoria (chaotycznych) układów dynamicznych oraz filozofia. Dyskusja na ten temat przekracza ramy tych wykładów. Z punktu widzenia użytkownika, „liczby losowe” są bardzo łatwo dostępne, bo ich generatory są wbudowane w systemy komputerowe. Przyjmę pragmatyczny punkt widzenia i zacznę od następującego założenia.
Założenie 3.1. Mamy do dyspozycji potencjalnie nieskończony ciąg niezależnych zmiennych losowych U\,... Un ... o jednakowym rozkładzie U(0,1).
W języku algorytmicznym: przyjmujemy, że każdorazowe wykonanie instrukcji zapisanej w pseudokodzie
Listing.
Gen U ~ U(0,1)
wygeneruje kolejną (nową) zmienną Un. Innymi słowy, zostanie wykonane nowe, niezależne doświadczenie polegające na wylosowaniu przypadkowo wybranej liczby z przedziału ]0,1[.
Przykład 3.1. Wykonanie pseudokodu
Listing.
for i = 1 to 10 begin
Gen U ~ U(0,1) write U end
da, powiedzmy, taki efekt:
0.32240106 0.38971803 0.35222521 0.22550039 0.04162166
0.13976025 0.16943910 0.69482111 0.28812341 0.58138865
Nawiasem mówiąc, rzeczywisty kod w R, który wyprodukował nasze 10 liczb losowych był taki:
U <- runif(10); U
Język R jest zwięzły i piękny, ale nasz pseudokod ma pewne walory dydaktyczne.
Symulacje stochastyczne i metody Monte Carlo © W.Niemko, Uniwersytet Warszawski, 2013.