Kolejny materiał o Pythonie 🐍! Następny moduł jaki sobie omówimy w niniejszym artykule, to jest "random" 😊. "random" w języku Python jest prosty w obsłudze do generowania losowych liczb, nie tylko z określonego przedziału 🎉! Dowiesz się z tego artykułu jakie niektóre metody posiada w sobie moduł "random" i jaka tajemnica kryje się za losowaniem 🔥!
PRZEDSTAWIAM MODUŁ "RANDOM" W JĘZYKU PYTHON!
Najpierw parę zdań o samym module, potem wyjaśnię proces losowania liczb, a następnie przejdziemy do prezentacji metod 😉.
Z CZEGO SKŁADA SIĘ MODUŁ "RANDOM" W JĘZYKU PYTHON?
Moduł "random" jaki występuje w Pythonie to droga do uzyskiwania liczb wylosowanych z określonego przedziału (zdefiniowanego bądź domyślnego) 👍. To jest jego główne zastosowanie, aczkolwiek nie jedyne 😲! Oto co jeszcze potrafi 👇:
- ustawianie tzw. "ziarna" generatora (ang. seed),
- losowanie elementu z podanej sekwencji,
- losowanie liczby zmiennoprzecinkowej (z ułamkiem) z przedziału <0; 1),
- losowanie liczby całkowitej (bez ułamka) z uwzględnieniem górnej granicy.
Część punktów może budzić zaskoczenie, natomiast w dalszej części wszystko wytłumaczę 🙂. Dodam, że zawsze masz do dyspozycji oficjalną dokumentację Pythona, w której znajdziesz pełną gamę metod udostępnianych przez moduł "random" w języku Python ℹ️.
Przechodzimy do ukazania części praktycznej 🚀!
JAK SKORZYSTAĆ Z MODUŁU "RANDOM" W JĘZYKU PYTHON?
Moduł "random" i jego metody do losowania liczb nie są dostępne od razu 🔒. Najpierw trzeba go zaimportować przy użyciu słowa kluczowego "import" 💡! Na samej górze swojego programu, dopisz tę linijkę 👇:
import random"import" sprawia, że dostęp do zawartości modułu będzie obejmował całość ✅. Gdyby kiedykolwiek interesowała Cię tylko jedna z metod (bądź wartości), możesz połączyć instrukcję importu ze słowem kluczowym "from", pisząc o tak 👇:
from random import [wartość/metoda występująca w module]Oba sposoby importowania mają późniejszy wpływ na przedostawanie się do nich i więcej informacji na ten temat zamieszczę w osobnych artykułach o "import" i "from" ℹ️. Ja będę prezentował przykłady po zastosowaniu pierwszego zapisu 🙂.
JAK METODY POSIADA MODUŁ "RANDOM" W JĘZYKU PYTHON?
Moduł "random" w Pythonie, składa się między innymi z poniższych metod 👇:
- seed,
- choice,
- random,
- randint.
Pamiętaj, że zawsze możesz zajrzeć do oficjalnej dokumentacji Pythona, aby dowiedzieć się o jeszcze innych metodach 😄! W tym artykule skupię się tylko na tych.
SEED
Metoda "seed" służy do ustawiania tzw. "ziarna" dla generatora liczb 😮. To ma związek z samym procesem wyznaczania losowych liczb, a w rzeczywistości "pseudolosowych" 💥! Dla zaciekawionych tematem, zostawiłem na samym dole wytłumaczenie dlaczego określa się to "pseudolosowością" ⬇️.
Tak czy inaczej, oto przykład 👇:
random.seed(1)Samo użycie tej metody nie przyniesie żadnego widocznego skutku, natomiast zszokuje Cię on w momencie korzystania z innych metod do losowania liczb 😁! Tak jak pisałem - wyjaśnienie tego wątku zostawiłem na samym dole 😉.
Metoda "seed" ustawia "ziarno" dla generatora liczb pseudolosowych, wpływając na zawartość sekwencji.
CHOICE
"choice" przyjmuje sekwencję elementów np. łańcuchów znaków (bo nie muszą to być jedynie liczby) i zwraca losowo jeden z nich 👍. Gdy mamy na przykład taką listę 👇:
strings = ['A', 'B', 'C']to możemy łatwo uzyskać losowy element przy użyciu metody "choice" 👇:
print(random.choice(strings))i uniknąć wyznaczania przedziału liczbowego, aby był zgodny z notacją indeksową (od 0 do N - 1) i odwoływania się do elementu poprzez indeks, tak jak często trzeba robić w innych językach 😅.
Metoda "choice" służy do zwracania losowego elementu z podanej sekwencji np. listy.
RANDOM
Moduł "random" posiada metodę "random" 😁! To jest wyznaczanie losowej wartości z przedziału <0; 1) jako liczba zmiennoprzecinkowa (z ułamkiem) ✨. Zwróć uwagę, że nie uwzględnia górnej granicy (nawias okrągły prawej strony przedziału ⚠️) 😱! A to jest przykład 👇:
print(random.random())Za każdym razem gdy uruchomisz program z taką instrukcją, dostrzeżesz inną liczbę ✔️. Niezależnie jaka by nie była, zawsze będzie z przedziału od 0 do 0.(9), pisząc w postaci ułamka okresowego 🙂.
Metoda "random" wyznacza losową liczbę zmiennoprzecinkową (z ułamkiem) z przedziału <0; 1). Przedział nie uwzględnia górnej granicy.
RANDINT
Metoda "randint" (skrót od "random integer" ℹ️) umożliwia wylosowanie liczby z przedziału "od do" i uwaga, ona będzie całkowita (bez ułamka) 😲! Ponadto uwzględnia górną granicę, w przeciwieństwie do "random" 💥! Prosty przykład użycia 👇:
print(random.randint(1, 5))Uruchomienie programu, wylosuje za każdym razem inną liczbę z przedziału od 1 do 5 ✔️.
Python nie pozwoli na sytuację, w której minimalny zakres jest większy od maksymalnego, więc jeżeli spróbujesz wstawić coś takiego 👇:
print(random.randint(6, 5))to skończy się awarią programu w postaci zgłoszenia wyjątku typu "ValueError" (zakres liczb jest pusty, bo pojawia się sprzeczność ❌). Przechwytywanie wyjątków jest nieco bardziej złożonym zagadnieniem, które zostało opisane w załączonym materiale ℹ️.
Metoda "randint" wyznacza losową liczbę całkowitą (bez ułamka) z podanego przedziału "od do". Przedział uwzględnia górną granicę.
Zakończyliśmy omawianie metod jakie wypisałem wcześniej, więc tutaj się kończy podstawowa część materiału 🏁. Jeżeli jednak interesuje Cię skąd powstają losowe liczby w Pythonie, zapraszam do dalszej lektury 😊!
Gdy zajrzysz do dokumentacji, to zobaczysz hasło "pseudolosowanie" 💥. Gdy mowa o losowaniu liczb w informatyce, to używanie pojęcia "losowania", jest niewłaściwe 🚫!
Przechodzę do wytłumaczenia tego zagadnienia ⏩!
DLACZEGO ZASTOSOWANIE MODUŁU "RANDOM" W JĘZYKU PYTHON JEST OKREŚLANE "PSEUDOLOSOWANIEM"?
Komputer, aby mógł wygenerować liczbę, którą postrzegamy za wylosowaną, potrzebuje jednej ważnej informacji: "ziarna" 🔥! "Ziarno" (ang. seed) to nic innego, jak liczba całkowita (bez ułamka), która trafia do generatora liczb pseudolosowych ➡️. W rzeczywistości, nie ma tutaj żadnego "prawdziwego" losowania 😱!
Generator liczb pseudolosowych, gdy otrzymuje daną wartość "ziarna", tworzy zawczasu pewną sekwencję liczb ułożonych w kolejności, tak jak w liście (strukturze danych przechowującej wiele elementów, która zapamiętuje ich kolejność dodawania ℹ️) 📦. Oznacza to, że jeżeli generator będzie otrzymywać to samo "ziarno", to poszczególne funkcje odpowiedzialne za "pseudolosowanie" liczby będą zwracać takie same wartości 😮!
Obrazując to na kodzie źródłowym, gdy będziemy mieli to samo "ziarno" (nieważne jakiej wartości), to poniższe instrukcje 👇:
print(random.random())
print(random.random())zwrócą nam takie same wartości każdorazowo 💥! Zatem, nie ma żadnego losowania, tylko jest generowanie innej sekwencji liczb zależnie od podanego "ziarna" 🎯! Dlatego prawidłowo określa się to "pseudolosowaniem" 💡!
Więcej informacji możesz przeczytać z artykułu dotyczącego już "ogólnie" programowania ℹ️.
Koniec prezentacji modułu "random" w języku Python 🙂. Wyjaśniłem prostym językiem co to za moduł, jakie ma przykładowe metody i dlaczego mamy tak naprawdę do czynienia z "pseudolosowaniem" 🎉.