Rozdział 4 · Python lubi liczby

Liczby losowe: random i secrets

Dwa moduły do losowości — i zasada, którą warto zapamiętać od pierwszego dnia: nie każda losowość jest równie bezpieczna.

Moduł random z biblioteki standardowej generuje pseudo-losowe liczby — wyglądają na losowe i są wystarczająco dobre do gier, symulacji i przykładów edukacyjnych.

random_demo.py
import random

print(random.randint(1, 6))   # losowa liczba całkowita od 1 do 6 włącznie
print(random.random())        # liczba losowa między 0,0 a 1,0
print(random.choice([„Eagle”, reszki]))  # losowy wybór z listy

Powtarzalność poprzez seed

Czasem chcesz, aby powtarzała się „losowa” seed():

seed_demo.py
import random

random.seed(42)
print(random.randint(1, 100))  # to zawsze ta sama liczba dla tej samej seed
Potrzebujesz szansy?randomsymulacje, gry, szkoleniasecretsżetony, hasła,bezpieczeństwo
Wybór modułu zależy od tego, czy stawką jest bezpieczeństwo

BEZPIECZEŃSTWO: random – nie dotyczy haseł i tokenów

Nie generuj haseł i tokenów za pomocą modułu random
random zoptymalizowany pod kątem szybkości i jakości statystycznej, a nie nieprzewidywalności wobec atakującego — jego wynik zasadniczo można przewidzieć, znając wewnętrzny stan generatora. Do wszystkiego, co „wrażliwe na bezpieczeństwo” (hasła, tokeny sesji, klucze) używaj modułu secrets.
secrets_demo.py
import secrets

token = secrets.token_hex(16)
print(token)  # kryptograficznie bezpieczny token losowy
Praktyka: random vs secrets
Interaktywny laptop bezpośrednio w przeglądarce – wybierz odpowiednie narzędzie do zadania
Otwórz praktykę →