Python массив рандомные числа

Random sampling ( numpy.random )#

The numpy.random module implements pseudo-random number generators (PRNGs or RNGs, for short) with the ability to draw samples from a variety of probability distributions. In general, users will create a Generator instance with default_rng and call the various methods on it to obtain samples from different distributions.

>>> import numpy as np >>> rng = np.random.default_rng() # Generate one random float uniformly distributed over the range [0, 1) >>> rng.random() 0.06369197489564249 # may vary # Generate an array of 10 numbers according to a unit Gaussian distribution. >>> rng.standard_normal(10) array([-0.31018314, -1.8922078 , -0.3628523 , -0.63526532, 0.43181166, # may vary 0.51640373, 1.25693945, 0.07779185, 0.84090247, -2.13406828]) # Generate an array of 5 integers uniformly over the range [0, 10). >>> rng.integers(low=0, high=10, size=5) array([8, 7, 6, 2, 0]) # may vary 

Our RNGs are deterministic sequences and can be reproduced by specifying a seed integer to derive its initial state. By default, with no seed provided, default_rng will create seed the RNG from nondeterministic data from the operating system and therefore generate different numbers each time. The pseudo-random sequences will be independent for all practical purposes, at least those purposes for which our pseudo-randomness was good for in the first place.

>>> rng1 = np.random.default_rng() >>> rng1.random() 0.6596288841243357 # may vary >>> rng2 = np.random.default_rng() >>> rng2.random() 0.11885628817151628 # may vary 

The pseudo-random number generators implemented in this module are designed for statistical modeling and simulation. They are not suitable for security or cryptographic purposes. See the secrets module from the standard library for such use cases.

Читайте также:  JavaScript Yes/No Confirmation box

Seeds should be large positive integers. default_rng can take positive integers of any size. We recommend using very large, unique numbers to ensure that your seed is different from anyone else’s. This is good practice to ensure that your results are statistically independent from theirs unless you are intentionally trying to reproduce their result. A convenient way to get such a seed number is to use secrets.randbits to get an arbitrary 128-bit integer.

>>> import secrets >>> import numpy as np >>> secrets.randbits(128) 122807528840384100672342137672332424406 # may vary >>> rng1 = np.random.default_rng(122807528840384100672342137672332424406) >>> rng1.random() 0.5363922081269535 >>> rng2 = np.random.default_rng(122807528840384100672342137672332424406) >>> rng2.random() 0.5363922081269535 

See the documentation on default_rng and SeedSequence for more advanced options for controlling the seed in specialized scenarios.

Generator and its associated infrastructure was introduced in NumPy version 1.17.0. There is still a lot of code that uses the older RandomState and the functions in numpy.random . While there are no plans to remove them at this time, we do recommend transitioning to Generator as you can. The algorithms are faster, more flexible, and will receive more improvements in the future. For the most part, Generator can be used as a replacement for RandomState . See Legacy Random Generation for information on the legacy infrastructure, What’s New or Different for information on transitioning, and NEP 19 for some of the reasoning for the transition.

Design#

Users primarily interact with Generator instances. Each Generator instance owns a BitGenerator instance that implements the core RNG algorithm. The BitGenerator has a limited set of responsibilities. It manages state and provides functions to produce random doubles and random unsigned 32- and 64-bit values.

Читайте также:  Php product catalog system

The Generator takes the bit generator-provided stream and transforms them into more useful distributions, e.g., simulated normal random values. This structure allows alternative bit generators to be used with little code duplication.

NumPy implements several different BitGenerator classes implementing different RNG algorithms. default_rng currently uses PCG64 as the default BitGenerator . It has better statistical properties and performance than the MT19937 algorithm used in the legacy RandomState . See Bit Generators for more details on the supported BitGenerators.

default_rng and BitGenerators delegate the conversion of seeds into RNG states to SeedSequence internally. SeedSequence implements a sophisticated algorithm that intermediates between the user’s input and the internal implementation details of each BitGenerator algorithm, each of which can require different amounts of bits for its state. Importantly, it lets you use arbitrary-sized integers and arbitrary sequences of such integers to mix together into the RNG state. This is a useful primitive for constructing a flexible pattern for parallel RNG streams .

For backward compatibility, we still maintain the legacy RandomState class. It continues to use the MT19937 algorithm by default, and old seeds continue to reproduce the same results. The convenience Functions in numpy.random are still aliases to the methods on a single global RandomState instance. See Legacy Random Generation for the complete details. See What’s New or Different for a detailed comparison between Generator and RandomState .

Parallel Generation#

The included generators can be used in parallel, distributed applications in a number of ways:

Users with a very large amount of parallelism will want to consult Upgrading PCG64 with PCG64DXSM .

Concepts#

Features#

  • Parallel Applications
    • SeedSequence spawning
    • Sequence of Integer Seeds
    • Independent Streams
    • Jumping the BitGenerator state
    • Recommendation
    • Timings
    • Performance on different Operating Systems
    • Numba
    • Cython
    • CFFI
    • New Bit Generators
    • Examples

    Original Source of the Generator and BitGenerators#

    This package was developed independently of NumPy and was integrated in version 1.17.0. The original repo is at bashtage/randomgen.

    Источник

    Модуль random на примерах — Изучение методов генерации случайных данных

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

    Список методов модуля random в Python:

    Метод Описание
    seed() Инициализация генератора случайных чисел
    getstate() Возвращает текущее внутренне состояние (state) генератора случайных чисел
    setstate() Восстанавливает внутреннее состояние (state) генератора случайных чисел
    getrandbits() Возвращает число, которое представляет собой случайные биты
    randrange() Возвращает случайное число в пределах заданного промежутка
    randint() Возвращает случайное число в пределах заданного промежутка
    choice() Возвращает случайный элемент заданной последовательности
    choices() Возвращает список со случайной выборкой из заданной последовательности
    shuffle() Берет последовательность и возвращает ее в перемешанном состоянии
    sample() Возвращает заданную выборку последовательности
    random() Возвращает случайное вещественное число в промежутке от 0 до 1
    uniform() Возвращает случайное вещественное число в указанном промежутке
    triangular() Возвращает случайное вещественное число в промежутке между двумя заданными параметрами. Также можно использовать параметр mode для уточнения середины между указанными параметрами
    betavariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Бета-распределении, которое используется в статистике
    expovariate() Возвращает случайное вещественное число в промежутке между 0 и 1, или же между 0 и -1 , когда параметр отрицательный. За основу берется Экспоненциальное распределение, которое используется в статистике
    gammavariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гамма-распределении, которое используется в статистике
    gauss() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Гауссовом распределении, которое используется в теории вероятности
    lognormvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Логнормальном распределении, которое используется в теории вероятности
    normalvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на Нормальном распределении, которое используется в теории вероятности
    vonmisesvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении фон Мизеса, которое используется в направленной статистике
    paretovariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Парето, которое используется в теории вероятности
    weibullvariate() Возвращает случайное вещественное число в промежутке между 0 и 1, основываясь на распределении Вейбулла, которое используется в статистике

    Цели данной статьи

    Далее представлен список основных операций, которые будут описаны в руководстве:

    • Генерация случайных чисел для различных распределений, которые включают целые и вещественные числа с плавающей запятой;
    • Случайная выборка нескольких элементов последовательности population ;
    • Функции модуля random;
    • Перемешивание элементов последовательности. Seed в генераторе случайных данных;
    • Генерация случайных строки и паролей;
    • Криптографическое обеспечение безопасности генератора случайных данных при помощи использования модуля secrets. Обеспечение безопасности токенов, ключей безопасности и URL;
    • Способ настройки работы генератора случайных данных;
    • Использование numpy.random для генерации случайных массивов;
    • Использование модуля UUID для генерации уникальных ID.

    В статье также даются ссылки на некоторые другие тексты сайта, связанные с рассматриваемой темой.

    Как использовать модуль random в Python

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

    Источник

    NumPy, часть 3: random

    Python 3 логотип

    Здравствуйте! Я продолжаю работу над пособием по python-библиотеке NumPy.

    В прошлой части мы научились работать с массивами.

    Сегодня мы узнаем, как создавать массивы из случайных элементов и как работать со случайными элементами в NumPy.

    Путь первый

    Создавать списки, используя встроенный модуль random, а затем преобразовывать их в numpy.array:

    numpy.random

    Для создания массивов со случайными элементами служит модуль numpy.random.

    Создание массивов

    Самый простой способ задать массив со случайными элементами — использовать функцию sample (или random, или random_sample, или ranf — это всё одна и та же функция).

    Без аргументов возвращает просто число в промежутке [0, 1), с одним целым числом — одномерный массив, с кортежем — массив с размерами, указанными в кортеже (все числа — из промежутка [0, 1)).

    С помощью функции randint или random_integers можно создать массив из целых чисел. Аргументы: low, high, size: от какого, до какого числа (randint не включает в себя это число, а random_integers включает), и size — размеры массива.

    Также можно генерировать числа согласно различным распределениям (Гаусса, Парето и другие). Чаще всего нужно равномерное распределение, которое можно получить с помощь функции uniform.

    Выбор и перемешивание

    Перемешать NumPy массив можно с помощью функции shuffle:

    Также можно перемешать массив с помощью функции permutation (она, в отличие от shuffle, возвращает перемешанный массив). Также она, вызванная с одним аргументом (целым числом), возвращает перемешанную последовательность от 0 до N.

    Сделать случайную выборку из массива можно с помощью функции choice. Про неё стоит рассказать подробнее.

    numpy.random.choice(a, size=None, replace=True, p=None)

    • a : одномерный массив или число. Если массив, будет производиться выборка из него. Если число, то выборка будет производиться из np.arange(a).
    • size : размерности массива. Если None, возвращается одно значение.
    • replace : если True, то одно значение может выбираться более одного раза.
    • p : вероятности. Это означает, что элементы можно выбирать с неравными вероятностями. Если не заданы, используется равномерное распределение.

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

    seed(число) — инициализация генератора.

    get_state и set_state — возвращают и устанавливают состояние генератора.

    Для вставки кода на Python в комментарий заключайте его в теги

    • Книги о Python
    • GUI (графический интерфейс пользователя)
    • Курсы Python
    • Модули
    • Новости мира Python
    • NumPy
    • Обработка данных
    • Основы программирования
    • Примеры программ
    • Типы данных в Python
    • Видео
    • Python для Web
    • Работа для Python-программистов

    Источник

Оцените статью