Rozdział 5 · Pobawmy się liczbami!
randint, randrange, uniform
Trzy podobne funkcje z trzema różnymi zasadami dotyczącymi granic zasięgu — i jednym klasycznym błędem, który pojawia się, gdy je pomieszasz.
randint(a, b) jest losową całością, obie granice są uwzględnione
randint.py
import random
kubik = random.randint(1, 6) # może być 1, 2, 3, 4, 5 LUB 6
print(kubik)
Powszechny błąd „na jeden”
Jeśli potrzebujesz liczb od 1 do 5 (nie licząc 6), ale zapisz
random.randint(1, 6) — program czasem źle zwraca 6. Obie granice randint() są włączone — warto o tym pamiętać za każdym razem.randrange(start, stop, step) — jak range(), ale przypadkowo
W przeciwieństwie do randint(), u randrange()
górna granica nie uwzględnione — całkiem jak w zwykłym range(),
który szczegółowo przeanalizujemy w rozdziale 10. Dodatkowo jest opcjonalny krok:
randrange.py
import random
print(random.randrange(1, 7)) # od 1 do 6 włącznie – 7 NIE jest uwzględnione, analogowe randint(1, 6)
print(random.randrange(0, 10, 2)) # Losowa liczba parzysta: 0, 2, 4, 6 lub 8
| Funkcja | Górna granica | Krok |
|---|---|---|
randint(a, b) | włączona | nie, tylko sąsiednie całości |
randrange(a, b) | NIE UWZGLĘDNIONE | nie (domyślnie 1) |
randrange(a, b, step) | NIE UWZGLĘDNIONE | tak — można przeskakiwać |
uniform(a, b) jest liczbą ułamkową losową
Działa jako randint(), ale dla float
jest dowolną wartością ułamkową w zakresie, nie tylko liczbami całkowitym:
uniform.py
import random
temperatura = random.uniform(18.0, 24.0)
print(round(temperatura, 1)) # np. 21.3
Praktyka: randint, randrange, uniform
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji