Modelowanie komputerowe wykład 1- Generatory liczb losowych i ich wykorzystanie dr Marcin Ziółkowski Instytut Matematyki i Informatyki Akademia im. Jana Długosza w Częstochowie 5,12 października 2016 r.
PLAN WYKŁADU 1 Generatory liczb pseudolosowych i ich wykorzystanie 2 Generowanie ciągów liczb losowych- metody odwracania dystrybuanty, superpozycji i eliminacji 3 Symulacje komputerowe. Metoda następnego zdarzenia 4 Charakterystyka klasycznych systemów kolejkowych (systemów obsługi masowej) 5 Analiza symulacyjna prostych jednoliniowych i wieloliniowych systemów kolejkowych 6 Systemy informatyczne o stochastycznym charakterze działania, charakterystyka i klasyfikacja 7 Analizy symulacyjne systemów obsługi zgłoszeń o losowej objętości, przykłady systemów priorytetowych
LITERATURA [1] R. Wieczorkowski, R. Zieliński. Komputerowe generatory liczb losowych. WNT, Warszawa, 1997. [2] O. Tikhonenko. Metody probabilistyczne analizy systemów informacyjnych. EXIT, Warszawa, 2006.
GENERATORY LICZB PSEUDOLOSOWYCH- WPROWADZENIE W wielu praktycznych zastosowaniach komputery służą dziś jako urządzenia, które symulują realne procesy techniczne, demograficzne, ekonomiczne, medyczne itp. Człowiek wykorzystuje duże prędkości procesorów komputera oraz jego zasoby pamięciowe, aby w szybki sposób poznać przebieg pewnych losowych zjawisk w czasie. Procesy, które faktycznie mogą przebiegać w długim okresie czasowym można modelować, wykorzystując odpowiednie programy komputerowe nazywane programami symulacyjnymi. Programy takie tworzy się po to, aby poznać przebieg danych zjawisk oraz przewidzieć pewne prawidłowości.
GENERATORY LICZB PSEUDOLOSOWYCH- WPROWADZENIE Prowadzi to albo do znalezienia ogólnego przepisu(wzoru) określającego przebieg danego zjawiska lub w trudniejszych sytuacjach(gdy rozwiązanie ogólne jest niemożliwe do znalezienia) do znalezienia pewnych średnich charakterystyk zjawiska lub do stworzenia narzędzia, które może pozwolić przewidzieć wartości zjawiska w określonej chwili czasu. Ponieważ wiele przebiegających zjawisk ma charakter procesów losowych zależnych często od wielu czynników, więc naturalne jest, że podstawowym problemem jest umiejętność mądrego wykorzystania komputera jako maszyny losującej, za pomocą której można losować ciągi liczb losowych o zadanym rozkładzie prawdopodobieństwa.
GENERATORY LICZB PSEUDOLOSOWYCH- WPROWADZENIE Od początku istnienia komputerów kompilatory języków programowania są wyposażone w funkcje losujące. Jeśli chodzi o ścisłość, do losowania wykorzystywane są pewne algorytmy matematyczne wykorzystujące czas systemowy komputera(np. liczbę sekund, która upłynęła od 1 stycznia 1970 roku). Uzależnienie losowanej liczby od zmieniającego się czasu pozwala na uzyskiwanie różnych ciągów w zależności od chwili losowania, zatem ciągi te w krótkich odstępach czasowych są niezależne. Trzebamiećjednaknauwadze,żealgorytmyteopierająsięo pewne formuły matematyczne, które przy długiej serii losowań stają się cykliczne, to znaczy generatory losowe mają własność okresowości, co powoduje, że uzyskane ciągi liczb nie są losowe, nazywamy je częściej pseudolosowymi.
ZMIENNE LOSOWE- PRZYPOMNIENIE ZMIENNA LOSOWA- DEFINICJA Zmienną losową X nazywamy dowolną funkcję(mierzalną) odwzorowującą przestrzeń zdarzeń elementarnych Ω w zbiór liczb rzeczywistych R. Najważniejsze rodzaje zmiennych losowych to: zmienne losowe dyskretne, czyli takie, które przyjmują skończonąlubprzeliczalnąliczbęwartości x i z prawdopodobieństwami p i, i p i =1.Zespółliczb p i jest nazywany rozkładem zmiennej losowej dyskretnej. zmienne losowe absolutnie ciągłe, czyli takie, które przyjmują nieprzeliczalną liczbę wartości. Dla takich zmiennych losowych często podana jest tzw. funkcja gęstości prawdopodobieństwa f, która w ogólnym przypadku jest funkcjąnieujemnąorazspełniawarunek: f(x)dx =1.
ZMIENNE LOSOWE DYSTRYBUANTA, WARTOŚĆ OCZEKIWANA Dodatkowo przypomnijmy, że dla każdego rodzaju zmiennej losowej X można wprowadzić funkcję F określoną następująco: F(x) = P{X< x}, nazywaną DYSTRYBUANTĄ ZMIENNEJ LOSOWEJ X. W przypadku zmiennych losowych dyskretnych dystrybuantę obliczamy ze wzoru: F(x) = i<xp i. Natomiast w przypadku zmiennych losowych absolutnie ciągłych: F(x) = x f(u)du.
ZMIENNE LOSOWE DYSTRYBUANTA, WARTOŚĆ OCZEKIWANA Przypomnimy jeszcze podstawowe charakterystyki liczbowe zmiennych losowych oraz sposoby ich obliczania. POJĘCIE WARTOŚCI OCZEKIWANEJ Wartością oczekiwaną zmiennej losowej X nazywamy liczbę określoną następująco: EX = xdf(x).
WARTOŚĆ OCZEKIWANA, WARIANCJA W przypadku zmiennej losowej dyskretnej wartość oczekiwaną obliczamy ze wzoru: EX = i x i p i. W przypadku zmiennej losowej absolutnie ciągłej wartość oczekiwaną obliczamy ze wzoru: EX = xf(x)dx. POJĘCIE WARIANCJI Wariancją zmiennej losowej X nazywamy liczbę określoną następująco: DX = E(X EX) 2 = EX 2 (EX) 2.
WARIANCJA W przypadku zmiennej losowej dyskretnej wariancję obliczamy ze wzoru: DX = xi 2 p i (EX) 2. i W przypadku zmiennej losowej absolutnie ciągłej wariancję obliczamy ze wzoru: DX = x 2 f(x)dx (EX) 2.
GENEROWANIE LICZB LOSOWYCH- ROZKŁAD JEDNOSTAJNY W większości kompilatorów podstawową instrukcją losującą jest instrukcja rand(), której wynikiem jest wylosowana w oparciu o pewienalgorytmliczbanaturalnazzakresu [0,RAND MAX ],gdzie wartośćstała RAND MAX jestpewnągranicznąwartościąbędącą na przykład wartością największą typu całkowitego(int). Wykorzystanie tej komendy pozwala więc na losowanie wyłącznie liczbnaturalnychzograniczonegozbioru{0,1,2,...,rand MAX }. Powstaje naturalne pytanie, w jaki sposób wykorzystać tą komendę do losowania liczb z innych dyskretnych oraz ciągłych rozkładów prawdopodobieństwa.
ROZKŁAD JEDNOSTAJNY Bardzo szczególną rolę w modelowaniu komputerowym odgrywa rozkład jednostajny określony na przedziale [0, 1]. Jest to ciągły rozkład prawdopodobieństwa określony następującą funkcją gęstości: f(x) = 1 dla x [0,1].Okazujesiębowiem,żewykorzystująctenrozkładmożna w oparciu o matematyczne metody budować generatory liczb losowych dla wielu innych grup ciągłych rozkładów prawdopodobieństwa. Naturalne jest pytanie, w jaki sposób z generatora, który losuje liczby dyskretnezprzedziału [0,RAND MAX ]uzyskaćgeneratorrozkładu ciągłego- jednostajnego określonego na przedziale [0, 1]. Odpowiedź jest dość prosta- wystarczy otrzymane wylosowane liczby z analizowanego przedziałupodzielićprzezwartość RAND MAX.Wtensposóbwylosowane 1 2 liczbynależądozbioru{0, RAND MAX, RAND MAX,...,1}.Zauważmyjednak, że dalej jest to rozkład dyskretny. Jednak jego podstawowe charakterystyki są zbliżone do charakterystyk rozkładu jednostajnego. Oznacza to, że w szczególności wartość oczekiwana oraz wariancja takiego rozkładu są prawie identyczne, jak charakterystyki rozkładu jednostajnegonaprzedziale [0,1],któresąrówne-EX = 1 2,DX = 1 12.
Generator rozkładu jednostajnego- C++ #include<iostream> #include<cstdlib> using namespace std; intmain() { float x; srand(time(0)); for(int i=0;i<100;i++){ x=(float)rand()/rand_max; cout<<x<<","; } cout<<endl; return 0; }