Модуль random выдаёт псевдослучайные числа и выбирает элементы последовательностей. В текущей прошивке он не предоставляет криптографических гарантий и не позволяет задавать seed из Python.

Целые числа

getrandbits

random.getrandbits(n) возвращает число с n случайными битами: 0 ≤ результат < 2ⁿ. Допустимы целые n от 0 до 32 включительно. При n=0 возвращается 0; вне диапазона возникает ValueError.

  import random

print(random.getrandbits(5))   # 0…31
print(random.getrandbits(32))  # 0…4294967295
  

randint

random.randint(a, b) возвращает целое число включая обе границы. Требуется a <= b; одинаковые границы допустимы. При a > b возникает ValueError.

Аргументы должны помещаться в signed int32: −2147483648…2147483647. Полный диапазон поддерживается:

  import random

print(random.randint(1, 10))
print(random.randint(-2147483648, 2147483647))
assert random.randint(7, 7) == 7
  

randrange

  random.randrange(stop)
random.randrange(start, stop)
random.randrange(start, stop, step)
  

Возвращает один из элементов соответствующего range; граница stop не включается. По умолчанию start=0, step=1. Отрицательный шаг поддерживается. Пустой диапазон и нулевой шаг вызывают ValueError. Все аргументы должны помещаться в signed int32.

  import random

print(random.randrange(10))         # 0…9
print(random.randrange(1, 10, 2))   # 1, 3, 5, 7, 9
print(random.randrange(10, 0, -2))  # 10, 8, 6, 4, 2
  

Числа с плавающей точкой

random

random.random() возвращает float в диапазоне 0.0 ≤ x < 1.0.

uniform

random.uniform(a, b) вычисляет a + (b - a) * random.random(). Границы могут идти в любом порядке. При вычислениях с float результат округляется, поэтому не следует полагаться на строгое исключение второй границы.

  import random

print(random.random())
print(random.uniform(1.5, 3.5))
  

Выбор элемента

choice

random.choice(sequence) возвращает один элемент непустой индексируемой последовательности: списка, кортежа, строки и т. п. Пустая последовательность вызывает IndexError.

  import random

print(random.choice(['вентиляция', 'нагрев']))
  

Функции seed, shuffle, sample и распределения из CPython в этом модуле не экспортированы. Повторяемость последовательности после перезапуска не гарантируется.