Глава 5 · Давайте поиграем с числами!

randint, randrange, uniform

Три похожих функции с тремя разными правилами насчёт границ диапазона — и одна классическая ошибка, которая случается, если их перепутать.

randint(a, b) — случайное целое, обе границы включены

01234567randint(1, 6)16
randint(1, 6) может вернуть 1, может вернуть 6 — обе границы включены
randint.py
import random

kubik = random.randint(1, 6)   # может быть 1, 2, 3, 4, 5 ИЛИ 6
print(kubik)
Частая ошибка «на единицу» (off-by-one)
Если нужны числа от 1 до 5 (не включая 6), а написать random.randint(1, 6) — программа иногда будет неверно выдавать 6. Обе границы randint() включены — это стоит держать в голове каждый раз.

randrange(start, stop, step) — как range(), но случайно

В отличие от randint(), у randrange() верхняя граница не включена — совсем как у обычного range(), который мы разберём подробно в главе 10. Плюс есть необязательный шаг:

randrange.py
import random

print(random.randrange(1, 7))       # от 1 до 6 включительно — 7 НЕ входит, аналог randint(1, 6)
print(random.randrange(0, 10, 2))   # случайное чётное число: 0, 2, 4, 6 или 8
ФункцияВерхняя границаШаг
randint(a, b)включенанет — только соседние целые
randrange(a, b)НЕ включенанет (по умолчанию 1)
randrange(a, b, step)НЕ включенада — можно перескакивать

uniform(a, b) — случайное дробное число

Работает как randint(), но для float — любое дробное значение в диапазоне, а не только целые:

uniform.py
import random

temperatura = random.uniform(18.0, 24.0)
print(round(temperatura, 1))   # например, 21.3
Практика: randint, randrange, uniform
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →