Случайный - генерировать псевдослучайные числа; Документация по Python 3. 9. 6

random - генерировать псевдослучайные числа¶ Этот модуль реализует генераторы псевдослучайных чисел для различных распределений. Для целых чисел существует единообразный выбор из диапазона. Для

Этот модуль реализует генераторы псевдослучайных чисел для различных распределений.

Для целых чисел существует единообразный выбор из диапазона. Для последовательностей существует единообразный выбор случайного элемента, функция для генерации случайной перестановки списка на месте и функция для случайной выборки без замены.

На реальной линии есть функции для вычисления равномерного, нормального (гауссовского), логнормального, отрицательного экспоненциального, гамма- и бета-распределений. Для генерации распределений углов доступно распределение фон Мизеса.

Почти все функции модуля зависят от базовой функции random (), которая равномерно генерирует случайное число с плавающей запятой в полуоткрытом диапазоне [0.0, 1.0). Python использует Mersenne Twister в качестве основного генератора. Он производит 53-битные точные числа с плавающей запятой и имеет период 2 ** 19937-1. Базовая реализация на C является быстрой и потокобезопасной. Mersenne Twister - один из наиболее тщательно протестированных существующих генераторов случайных чисел. Однако, будучи полностью детерминированным, он не подходит для всех целей и совершенно непригоден для криптографических целей.

Функции, предоставляемые этим модулем, на самом деле являются связанными методами скрытого экземпляра класса random.Random. Вы можете создать свои собственные экземпляры Random, чтобы получить генераторы, которые не разделяют состояние.

Класс Random также можно разделить на подклассы, если вы хотите использовать другой базовый генератор, разработанный вами: в этом случае переопределите методы random (), seed (), getstate () и setstate (). При желании новый генератор может предоставить метод getrandbits () - это позволяет randrange () производить выборки в произвольно большом диапазоне.

Модуль random также предоставляет класс SystemRandom, который использует системную функцию os.urandom () для генерации случайных чисел из источников, предоставленных операционной системой.

Генераторы псевдослучайных чисел этого модуля не должны использоваться в целях безопасности. Для обеспечения безопасности или криптографического использования см. Модуль секретов.

М. Мацумото и Т. Нишимура, «Мерсенн Твистер: 623-мерный равнораспределенный генератор однородных псевдослучайных чисел», ACM Transactions on Modeling and Computer Simulation Vol. 8, № 1, январь, стр. 3–30 1998.

Рецепт дополнительного умножения с переносом для совместимого альтернативного генератора случайных чисел с длительным периодом и сравнительно простыми операциями обновления.

Бухгалтерские функции¶

Инициализируйте генератор случайных чисел.

Если a опущено или None, используется текущее системное время. Если источники случайности предоставляются операционной системой, они используются вместо системного времени (подробности о доступности см. В функции os.urandom ()).

Если a - это int, он используется напрямую.

В версии 2 (по умолчанию) объект str, bytes или bytearray преобразуется в int, и используются все его биты.

В версии 1 (предназначенной для воспроизведения случайных последовательностей из более старых версий Python) алгоритм для str и bytes генерирует более узкий диапазон начальных чисел.

Изменено в версии 3.2: переведена на схему версии 2, в которой используются все биты в начальном состоянии строки.

Не рекомендуется с версии 3.9. В будущем начальное значение должно быть одного из следующих типов: NoneType , int, float, str, bytes или bytearray.

Вернуть объект, фиксирующий текущее внутреннее состояние генератора. Этот объект можно передать в setstate () для восстановления состояния.

случайный. setstate ( состояние ) ¶

state должно было быть получено из предыдущего вызова getstate (), а setstate () восстанавливает внутреннее состояние генератора до того, каким оно было во время вызова getstate ().

Функции для байтов¶

Сгенерируйте n случайных байтов.

Этот метод не следует использовать для создания токенов безопасности. Вместо этого используйте secrets.token_bytes ().

Новое в версии 3.9.

Функции для целых чисел¶

Вернуть случайно выбранный элемент из диапазона (start, stop, step). Это эквивалентно выбору (диапазон (начало, остановка, шаг)), но на самом деле не создает объект диапазона.

Шаблон позиционного аргумента совпадает с шаблоном range (). Аргументы ключевого слова не должны использоваться, потому что функция может использовать их неожиданным образом.

Изменено в версии 3.2: функция randrange () более сложна в создании одинаково распределенных значений. Раньше он использовал такой стиль, как int (random () * n), который мог давать немного неравномерное распределение.

Верните случайное целое число N такое, что a

случайный. getrandbits ( k ) ¶

Возвращает неотрицательное целое число Python с k случайными битами. Этот метод поставляется с генератором MersenneTwister, и некоторые другие генераторы также могут предоставлять его как дополнительную часть API. Когда доступно, getrandbits () позволяет randrange () обрабатывать сколь угодно большие диапазоны.

Изменено в версии 3.9: этот метод теперь принимает ноль для k .

Функции для последовательностей¶

Вернуть случайный элемент из непустой последовательности seq . Если seq пуст, вызывает IndexError.

случайный. варианты ( совокупность , веса = Нет , * , cum_weights = Нет , k = 1 ) ¶

Возвращает список элементов размером k, выбранных из популяции с заменой. Если популяция пуста, вызывает IndexError.

Если указана последовательность весов , выбор выполняется в соответствии с относительными весами. В качестве альтернативы, если задана последовательность cum_weights , выбор выполняется в соответствии с совокупными весами (возможно, вычисленными с помощью itertools.accumulate ()). Например, относительные веса [10, 5, 30, 5] эквивалентны кумулятивным весам [10, 15, 45, 50]. Внутренне относительные веса преобразуются в кумулятивные веса перед выполнением выбора, поэтому предоставление кумулятивных весов экономит работу.

Если не указаны ни веса, ни cum_weights , выборки выполняются с равной вероятностью. Если предоставляется последовательность весов, она должна быть той же длины, что и последовательность популяции . Это TypeError для указания и веса, и cum_weights .

Эти веса или cum_weights могут использовать любой числовой тип , который взаимодействует со значениями с плавающей точкой , возвращаемым случайным образом () (который включает в себя целые числа, поплавки, и фракцию , но не включает десятичные). Поведение не определено, если какой-либо вес отрицательный. ValueError возникает, если все веса равны нулю.

Для заданного начального числа функция choices () с равным весом обычно производит другую последовательность, чем повторные вызовы choice (). Алгоритм, используемый choices (), использует арифметику с плавающей запятой для внутренней согласованности и скорости. Алгоритм, используемый функцией choice () по умолчанию, использует целочисленную арифметику с повторным выбором, чтобы избежать небольших смещений из-за ошибки округления.

Новое в версии 3.6.

Изменено в версии 3.9: вызывает ValueError, если все веса равны нулю.

Перемешайте последовательность x на место.

Необязательный аргумент random - это функция с 0 аргументами, возвращающая случайное число с плавающей запятой в [0.0, 1.0); по умолчанию это функция random ().

Чтобы перемешать неизменяемую последовательность и вернуть новый перемешанный список, используйте вместо этого sample (x, k = len (x)).

Обратите внимание, что даже для малых len (x) общее количество перестановок x может быстро вырасти больше, чем период большинства генераторов случайных чисел. Это означает, что большинство перестановок длинной последовательности никогда не могут быть сгенерированы. Например, последовательность длиной 2080 является наибольшей, которая может соответствовать периоду генератора случайных чисел Мерсенна Твистера.

Не рекомендуется с версии 3.9, будет удален в версии 3.11: Необязательный параметр random .

Возвращает список уникальных элементов длиной k, выбранных из последовательности или набора популяций. Используется для случайной выборки без замены.

Возвращает новый список, содержащий элементы из популяции, оставляя исходную популяцию неизменной. Результирующий список находится в порядке выбора, так что все субсрезы также будут действительными случайными выборками. Это позволяет разделить победителей розыгрыша (образец) на обладателей главного приза и занявших второе место (фрагменты).

Члены популяции не обязательно должны быть хешируемыми или уникальными. Если генеральная совокупность содержит повторы, то каждое вхождение является возможным выбором в выборке.

Повторяющиеся элементы можно указывать по одному или с помощью необязательного параметра counts only keyword . Например, sample (['red', 'blue'], counts = [4, 2], k = 5) эквивалентно sample (['red', 'red', 'red', 'red', ' синий »,« синий »], k = 5).

Чтобы выбрать образец из диапазона целых чисел, используйте в качестве аргумента объект range (). Это особенно быстро и эффективно для выборки из большой генеральной совокупности: выборка (диапазон (10000000), k = 60).

Если размер выборки больше, чем размер генеральной совокупности, возникает ошибка ValueError.

Изменено в версии 3.9: Добавлен параметр counts .

Не рекомендуется с версии 3.9: в будущем популяция должна быть последовательностью. Экземпляры набора больше не поддерживаются. Набор сначала должен быть преобразован в список или кортеж, желательно в детерминированном порядке, чтобы образец можно было воспроизвести.

Распределения с действительными значениями¶

Следующие функции генерируют определенные распределения с действительными значениями. Параметры функции названы в честь соответствующих переменных в уравнении распределения, как это используется в обычной математической практике; большинство этих уравнений можно найти в любом статистическом тексте.

Вернуть следующее случайное число с плавающей запятой в диапазоне [0,0, 1,0).

Возвращает случайное число N с плавающей запятой, такое что a

Значение конечной точки b может или не может быть включено в диапазон в зависимости от округления с плавающей запятой в уравнении a + (ba) * random ().

Возвращает случайное число N с плавающей запятой, такое что low режимом между этими границами. Низкой и высокой оценки по умолчанию нулем и единицей. В режиме аргументов по умолчанию средней точки между границами, давая симметричное распределение.

случайный. бета-вариант ( альфа , бета ) ¶

Бета-распределение. Условия для параметров: альфа>0 и бета>0. Возвращаемые значения находятся в диапазоне от 0 до 1.

случайный. экспоненциальная ( лямбд ) ¶

Экспоненциальное распределение. лямбд составляет 1,0, деленное на желаемое среднее значение. Оно должно быть ненулевым. (Параметр будет называться «лямбда», но это зарезервированное слово в Python.) Возвращаемые значения находятся в диапазоне от 0 до положительной бесконечности, если лямбда положительная, и от отрицательной бесконечности до 0, если лямбда отрицательная.

случайный. гаммавариат ( альфа , бета ) ¶

Гамма-распределение. ( Не гамма-функция!) Условия для параметров: альфа>0 и бета>0.

Функция распределения вероятностей:

Гауссово распределение. mu - среднее значение, а сигма - стандартное отклонение. Это немного быстрее, чем функция normalvariate (), определенная ниже.

Примечание о многопоточности: когда два потока вызывают эту функцию одновременно, возможно, что они получат одно и то же возвращаемое значение. Этого можно избежать тремя способами. 1) Пусть каждый поток использует другой экземпляр генератора случайных чисел. 2) Поставьте замки на все звонки. 3) Вместо этого используйте более медленную, но ориентированную на потоки функцию normalvariate ().

случайный. lognormvariate ( мю , сигма ) ¶

Журнал нормального распределения. Если взять натуральный логарифм этого распределения, вы получите нормальное распределение со средним мю и стандартное отклонение сигмы . mu может иметь любое значение, а сигма должна быть больше нуля.

случайный. normalvariate ( мю , сигма ) ¶

Нормальное распределение. mu - среднее значение, а сигма - стандартное отклонение.

случайный. vonmisesvariate ( му , каппа ) ¶

mu - средний угол, выраженный в радианах от 0 до 2 * pi , а каппа - параметр концентрации, который должен быть больше или равен нулю. Если каппа равна нулю, это распределение сводится к равномерному случайному углу в диапазоне от 0 до 2 * пи .

случайный. паретовариат ( альфа ) ¶

Распределение Парето. альфа - параметр формы.

случайный. weibullvariate ( альфа , бета ) ¶

Распределение Вейбулла. альфа - параметр масштаба, а бета - параметр формы.

Альтернативный генератор¶

Класс, реализующий генератор псевдослучайных чисел по умолчанию, используемый модулем random.

Не рекомендуется, начиная с версии 3.9: в будущем семя должно быть одного из следующих типов: NoneType, int, float, str, bytes или bytearray.

Класс, использующий функцию os.urandom () для генерации случайных чисел из источников, предоставленных операционной системой. Доступно не во всех системах. Не зависит от состояния программного обеспечения, и последовательности не воспроизводятся. Соответственно, метод seed () не действует и игнорируется. Методы getstate () и setstate () вызывают ошибку NotImplementedError, если они вызываются.

Замечания по воспроизводимости¶

Иногда полезно иметь возможность воспроизвести последовательности, заданные генератором псевдослучайных чисел. При повторном использовании начального значения одна и та же последовательность должна воспроизводиться от запуска к запуску, пока несколько потоков не работают.

Большинство алгоритмов и функций заполнения случайного модуля могут изменяться в разных версиях Python, но два аспекта гарантированно не изменятся:

Если добавлен новый метод посева, то будет предложена сеялка с обратной совместимостью.

Метод random () генератора будет продолжать создавать ту же последовательность, когда совместимому сеялке будет дано то же самое начальное число.