numpy.random — Генерация случайных чисел

Подмодуль numpy.random предоставляет класс Generator, который извлекает выборки из распространённых распределений вероятностей. В основе лежит алгоритм перестановочно-конгруэнтного генератора (PCG); подробности см. на https://www.pcg-random.org/.

Generator — объект с состоянием: каждый вызов одного из его методов выборки продвигает внутреннее состояние, поэтому последовательные вызовы возвращают независимые выборки. Выходные массивы всегда имеют dtype numpy.float.

Классы

class numpy.random.Generator(seed: int | tuple[int, ...] | None = None)

Создаёт новый генератор псевдослучайных чисел.

Параметры:

seed – начальное значение (seed), используемое для инициализации состояния генератора. Если передано целое число, оно используется напрямую. Если передан кортеж целых чисел, вместо одного экземпляра возвращается кортеж независимо инициализированных объектов Generator (по одному на каждый элемент). Если передано None, используется начальное значение по умолчанию для платформы (если оно настроено на этапе сборки); в противном случае возбуждается ValueError.

Исключение:
  • TypeError – если seed не равно None, не является целым числом и не является кортежем целых чисел.

  • ValueError – если seed равно None и начальное значение по умолчанию не настроено.

normal(loc: float = 0.0, scale: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray

Извлекает выборки из нормального (гауссова) распределения.

Параметры:
  • loc – среднее (центр) распределения.

  • scale – стандартное отклонение (ширина) распределения. Должно быть неотрицательным.

  • size – форма выходных данных. Если целое число, возвращается одномерный массив этой длины. Если кортеж, возвращается массив этой формы. Если None (значение по умолчанию), возвращается единственное Python-значение float.

Результат:

либо Python-значение float, либо numpy.ndarray из чисел с плавающей точкой требуемой формы.

Исключение:
  • ValueError – если запрошенная форма превышает ULAB_MAX_DIMS.

  • TypeError – если size не равно None, не является целым числом и не является кортежем.

Выборки генерируются с помощью преобразования Бокса-Мюллера.

random(size: int | tuple[int, ...] | None = None, *, out: ndarray | None = None) float | ndarray

Извлекает выборки из равномерного распределения на полуоткрытом интервале [0.0, 1.0).

Параметры:
  • size – форма выходных данных. Если целое число, возвращается одномерный массив этой длины. Если кортеж, возвращается массив этой формы. Если None (значение по умолчанию) и out также равно None, возвращается единственное Python-значение float.

  • out – необязательный заранее выделенный плотный numpy.ndarray из чисел с плавающей точкой для приёма выборок. Если переданы и size, и out, их формы должны совпадать.

Результат:

Python-значение float, новый numpy.ndarray или out (заполненный выборками) в зависимости от аргументов.

Исключение:
  • TypeError – если size имеет неподдерживаемый тип, либо out не является ndarray, либо out имеет dtype, отличный от float.

  • ValueError – если запрошенная форма превышает ULAB_MAX_DIMS, если size и out.shape не совпадают, либо если out не является непрерывным.

uniform(low: float = 0.0, high: float = 1.0, size: int | tuple[int, ...] | None = None) float | ndarray

Извлекает выборки из равномерного распределения на полуоткрытом интервале [low, high).

Параметры:
  • low – нижняя граница (включительно) распределения.

  • high – верхняя граница (исключая) распределения.

  • size – форма выходных данных. Если кортеж, возвращается массив этой формы. Если None (значение по умолчанию), возвращается единственное Python-значение float, извлечённое из [0.0, 1.0) (границы low/high в скалярном случае игнорируются).

Результат:

либо Python-значение float, либо numpy.ndarray из чисел с плавающей точкой требуемой формы.

Исключение:
  • ValueError – если запрошенная форма превышает ULAB_MAX_DIMS.

  • TypeError – если size не равно None и не является кортежем.

При одинаковых аргументах по умолчанию uniform() порождает ту же последовательность, что и random().