Rozdział 5 · Pobawmy się liczbami!

seed i powtarzalność

Pseudolosowość może zostać „zamrożona”

seed() — ustaw stan początkowy generatora

Ponieważ generator pseudolosowy jest formułą o stanie, to przez określenie tego samego początkowego stan („ziarnista”

seed.py
import random

random.seed(42)
print(random.randint(1, 100))   # zawsze jest tą samą liczbą, gdy seed(42)

random.seed(42)                 # zresetuj stan
print(random.randint(1, 100))   # ta sama liczba co za pierwszym razem
Dlaczego jest to potrzebne w praktyce?
Powtarzalność jest kluczowa podczas debugowania: jeśli błąd pojawia się tylko „czasami” random.seed() pozwala przechwycić konkretną „losową”

Niezależne generatory: random.Random()

Wszystkie funkcje modułu randompracowaliśmy z Jeden powszechny, „globalny”

random_instance.py
import random

generator_a = random.Random(1)
generator_b = random.Random(1)

print(generator_a.randint(1, 100))   # oba generatory są tworzone z tą samą seed –
print(generator_b.randint(1, 100))   # oznacza, że uzyskają ten sam wynik niezależnie od siebie

random nie jest bezpieczny dla haseł i kluczy

razy randomprzewidywalny generator (ten sam seed → tej samej sekwencji) nie może być używana tam, gdzie losowość chroni przed hakowanie: hasła, tokeny sesji, klucze szyfrujące. Aby to zrobić, standardowa biblioteka Python Jest osobny moduł — secrets, zaprojektowany dokładnie dla bezpieczeństwa, a nie dla szybkości.

random czy secrets?
Czy potrzebujesz losowości w grze, symulacji, przypadku testowym?
zastosowanie random
Potrzebna losowość dla hasła, tokena, klucza bezpieczeństwa?
zastosowanie secrets
random zoptymalizowany pod kątem szybkości i przewidywalności jednocześnie seed – NIE nadaje się do ochrony danych
secrets_primer.py
import secrets

token = secrets.token_hex(16)   # kryptograficznie bezpieczny losowy token
print(token)
Nie będziemy secrets szczegółowo analizować w tym rozdziale
Wystarczy pamiętać o samej zasadzie: random — do gier, symulacji i zadań edukacyjnych; secrets — tam, gdzie przypadek chroni coś cennego. O bezpieczeństwie porozmawiamy dokładniej w późniejszych rozdziałach.
Praktyka: seed i powtarzalność
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →