Moduł random

Często w programach występuje potrzeba użycia liczb losowych. Ich kilka typowych zastosowań to:

W Pythonie dostępny jest moduł random, który jest pomocny w realizacji takich zadań. Możesz się mu przyjrzeć bliżej w dokumentacji Pythona. Poniżej przedstawiono najważniejsze rzeczy, jakie powinieneś wiedzieć o tym module.




(chmodule_rand)

Naciśnij przycisk Run wiele razy. Zauważ, że wartość wyjściowa zmienia się po każdym naciśnięciu. Tak generuje się liczby losowe.

Funkcja randrange generuje całkowitą liczbę losową z przedziału określonego przez pierwszy i drugi argument, przy czym semantyka jest taka sama, jak w funkcji range – generowane wartości są z przedziału od pierwszego argumentu do liczby o jeden mniejszej od drugiego argumentu. Prawdopodobieństwo wystąpienia każdej z wartości z określonego w ten sposób przedziału jest jednakowe (innymi słowy rozkład prawdopodobieństwa możliwych wyników jest równomierny lub jednostajny)

Funkcja random() zwraca liczbę rzeczywistą z przedziału [0.0, 1.0) – nawias kwadratowy oznacza przedział domknięty z lewej strony a nawias okrągły z prawej strony oznacza przedział otwarty z prawej strony, czyli zbiór możliwych wartości rozciąga się od zera do jeden, z wyłączeniem jednyki. Zwykle wyjście tej funkcji przeskalowuje się tak, aby dostosować zakres generowanych liczb losowych do konkretnych wymagań.

W okienku poniżej przeskalowaliśmy wynik wywołania funkcji random() na zakres [0.0 5.0). Ponownie, otrzymane wyniki charakteryzują się rozkładem równomiernym, to znaczy wyniki w otoczeniu liczby 0 są tak samo prawdopodobne, jak w otoczeniu liczby 0.5 lub liczby 1. Przy wielokrotnym wykonywaniu kodu w okienku będziesz otrzymywał liczby pomiędzy 0 a 5, ale wartość 5 nigdy nie wystąpi.




(chmodule_rand2)

Ważne jest aby wiedzieć, że generatory liczb losowych zwykle są oparte na algorytmach deterministycznych – są powtarzalne i przewidywalne. Dlatego nazywa się je generatorami pseudo-losowymi – tak naprawdę nie są losowe. Generatory liczb losowych posiadają parametr nazywany seed. Za każdym wywołaniem generatora dostaje się liczbę losową opartą na aktualnie ustawionej wartości parametru seed, po czym wartość ta jest aktualizowana. Dobra wiadomość jest taka, że przy każdym uruchomieniu programu, w którym wykorzystano generator liczb pseudo-losowych, najprawdopodobniej wartość seed jest różna, dzięki czemu, pomimo, że algorytm generowania liczb losowych jest deterministyczny, to jego zachowanie jest losowe za każdym razem.

Ćwiczenie

  • Sine Wave W tym ćwiczeniu narysujemy za pomocą turtle sinusoidę.

Sprawdźmy, czego się nauczyłeś

modules-4-1: Która z poniższych instrukcji jest poprawnym wywołaniem w celu otrzymania wartości liczby pi z modułu matematycznego? Załóż, że moduł math został już zaimportowany.





modules-4-2: Który z modułów byś zastosował do napisania programu do symulacji rzutu kostką do gry?





modules-4-3: Poprawny kod generujący całkowitą liczbę losową z przedziału od 1 do 100 (przy czym 100 zawiera się w przedziale) to:





modules-4-4: Jedną z przyczyn, dla których w losowaniu Dużego Lotka nie używa się komputerów jest to, że:





Informacja

Poniższe okienko dla aktywnego kodu umiejscowiono tu dla Twej wygody. Możesz je wykorzystać do dowolnej rzeczy, jaka Ci przyjdzie do głowy.




(scratch_04)

Następna część - Słowniczek