Generator liczb pseudolosowych

W programowaniu nie mamy dostępu do prawdziwie losowych liczb, dlatego używamy generatorów liczb pseudolosowych. Są one powtarzalne, co oznacza, że możemy w identyczny sposób powtórzyć proces losowania. W języku C++ możemy ustawić ziarnoziarnoziarno dla generatora pseudolosowego. Należy jednak pamiętać, że implementacja takiego generatora może być inna w zależności od kompilatora. Co oznacza, że powtórzenie procesu losowania na innym komputerze może dać inne rezultaty. Ziarno w języku C++ możemy ustawić funkcją srand() z biblioteki <cstdlib> w następujący sposób:

Linia 1. unsigned int ziarno znak równości 15 średnik. Linia 2. srand otwórz nawias okrągły ziarno zamknij nawias okrągły średnik.

Poniżej prezentujemy kod, który trzy razy wywołuje funkcję wyznaczającą liczbę π metodą Monte Carlo. Za każdym razem przed rozpoczęciem procesu losowania ustawiane jest jednak inne ziarno.

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny cstdlib zamknij nawias ostrokątny. Linia 4. using namespace std średnik. Linia 6. double wyznaczPi otwórz nawias okrągły int liczbaLosowan zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. int liczbaTrafien znak równości 0 średnik. Linia 9. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny liczbaLosowan średnik plus plus i zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. prawy ukośnik prawy ukośnik losowe liczby z przedziału otwórz nawias ostrokątny minus 1 przecinek 1 zamknij nawias ostrokątny. Linia 11. double x znak równości 2 asterysk double otwórz nawias okrągły rand otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły prawy ukośnik RAND podkreślnik MAX minus 1 średnik. Linia 12. double y znak równości 2 asterysk double otwórz nawias okrągły rand otwórz nawias okrągły zamknij nawias okrągły zamknij nawias okrągły prawy ukośnik RAND podkreślnik MAX minus 1 średnik. Linia 14. if otwórz nawias okrągły x asterysk x plus y asterysk y otwórz nawias ostrokątny znak równości 1 zamknij nawias okrągły otwórz nawias klamrowy. Linia 15. plus plus liczbaTrafien średnik. Linia 16. zamknij nawias klamrowy. Linia 17. zamknij nawias klamrowy. Linia 19. double pi znak równości 4 asterysk double otwórz nawias okrągły liczbaTrafien zamknij nawias okrągły prawy ukośnik liczbaLosowan średnik. Linia 21. return pi średnik. Linia 22. zamknij nawias klamrowy. Linia 24. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 25. srand otwórz nawias okrągły 1 zamknij nawias okrągły średnik. Linia 26. cout otwórz nawias ostrokątny otwórz nawias ostrokątny wyznaczPi otwórz nawias okrągły 10000 zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 27. srand otwórz nawias okrągły 2 zamknij nawias okrągły średnik. Linia 28. cout otwórz nawias ostrokątny otwórz nawias ostrokątny wyznaczPi otwórz nawias okrągły 10000 zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 29. srand otwórz nawias okrągły 3 zamknij nawias okrągły średnik. Linia 30. cout otwórz nawias ostrokątny otwórz nawias ostrokątny wyznaczPi otwórz nawias okrągły 10000 zamknij nawias okrągły otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 32. return 0 średnik. Linia 33. zamknij nawias klamrowy.

Przykładowe wyniki uzyskane po uruchomieniu programu:

Linia 1. 3 kropka 1464. Linia 2. 3 kropka 1568. Linia 3. 3 kropka 12.
1
Polecenie 1

Przeanalizuj prezentację, w której porównujemy dwa dostępne w języku C++ generatory liczb pseudolosowych.

R1W5P2QNdKkN61
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Polecenie 2

Przeprowadź 100 razy symulację dla 1000 losowań. Za każdym razem zainicjuj generator losowym ziarnem według opisanej w prezentacji metody. Oblicz średnią arytmetyczną uzyskanych wyników. Następnie przeprowadź jedną symulację zainicjowaną losowym ziarnem dla

Słownik

ziarno
ziarno

liczba lub wektor służący do zainicjowania generatora pseudolosowego

generator liczb pseudolosowych
generator liczb pseudolosowych

podprogram zwracający kolejne liczby z deterministycznego ciągu liczb, który ma podobne własności do ciągów losowych

Stanisław Ulam
Stanisław Ulam

polski matematyk (ur. 13 kwietnia 1909 r. we Lwowie, zm. 13 maja 1984 r. w Santa Fe), zaliczany do lwowskiej szkoły matematycznej, posiadający wybitny wkład do teorii mnogości oraz topologii, twórca metod numerycznych, współtwórca bomby atomowej

skala logarytmiczna
skala logarytmiczna

rodzaj skali pomiarowej, w której wartość przekształcana jest za pomocą funkcji logarytmicznej, najczęściej o podstawie 2, 10 lub e