Как заполнить массив случайными числами питон
Перейти к содержимому

Как заполнить массив случайными числами питон

Модуль random в Python

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

Что такое случайные числа?

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

Как сгенерировать случайные числа с помощью Numpy?

Чтобы сгенерировать случайные числа в Python, мы сначала импортируем пакет Numpy.

Теперь мы можем сгенерировать число, используя:

При повторном запуске вы получите:

Он всегда возвращает число от 0 до 1. В качестве альтернативы вы также можете использовать:

При повторном запуске получаем:

Мы можем использовать это для создания массивов Numpy со случайными числами, которые следуют нормальному распределению.

Как создать случайный массив, который следует нормальному распределению?

Нормальное распределение – это такое распределение, в котором среднее значение, вид и медиана равны. В этом случае данные распределяются симметрично по центру. График нормального распределения выглядит как колокол. Вот почему ее также называют «колоколообразной кривой».

Чтобы создать массив со случайными числами в соответствии с нормальным распределением, используйте:

При повторном запуске получаем:

Мы также можем создать массив из 5.

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

Мы также можем создавать массивы Numpy, которые следуют равномерному распределению.

Как создать случайный массив, который следует равномерному распределению?

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

При повторном запуске получаем:

Как выбрать случайным образом из списка?

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

При повторном запуске получаем:

Вы также можете использовать его для выбора символов или строк из списка.

При повторном запуске получаем:

Как случайным образом выбирать числа из набора для заполнения массива?

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

Нам нужно будет предоставить список опций, и используя этот метод выбора, мы создадим матрицу указанного размера.

При повторном запуске получаем:

Заключение

Это руководство было посвящено модулю random в пакете Numpy. Мы узнали, как создавать массивы, соответствующие нормальному и равномерному распределению. Мы также узнали, как использовать метод выбора для случайного выбора из списка.

Предисловие переводчика

Всем здравствуйте, вот мы и подошли к конечной части. Приятного чтения!
Навигация:

Математика многочленов

NumPy предоставляет методы для работы с полиномами. Передавая список корней, можно получить коэффициенты уравнения:

Здесь, массив возвращает коэффициенты соответствующие уравнению: .
Может быть произведена и обратная операция: передавая список коэффициентов, функция root вернет все корни многочлена:

Заметим, что в этом уравнении два корня мнимые.
Коэффициенты многочлена могут быть интегрированы. Рассмотрим интегрирование в . Обычно константа C равна нулю:

Аналогично, могут быть взяты производные:

Функции polyadd, polysub, polymul и polydiv также поддерживают суммирование, вычитание, умножение и деление коэффициентов многочлена, соответственно.
Функция polyval подставляет в многочлен заданное значение. Рассмотрим многочлен при x = 4:

В заключение, функция polyfit может быть использована для подбора (интерполяции) многочлена заданного порядка к набору значений:

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

Статистика

В придачу к функциям mean, var и std, NumPy предоставляет еще некоторые методы для работы со статистическими данными в массивах.
Медиана может быть найдена так:

Коэффициент корреляции для некоторых переменных, наблюдается несколько раз и может быть найден из массивов вида: [[x1, x2, . ], [y1, y2, . ], [z1, z2, . ], . ], где x, y, z это разные квантовые наблюдаемые и номера указывают количество «наблюдений»:

Имеем возвращаемый массив c[i, j] который хранит корреляционный коэффициент для i-тых и j-тых квантовых наблюдаемых.
Аналогично, ковариационный момент может быть найден:

Случайные числа

Важная часть каждой симуляции это способность генерировать случайные числа. Для этого мы используем встроенный в NumPy генератор псевдослучайных чисел в под-модуле random. Числа являются псевдо случайными, в том плане что, они сгенерированы детерминистически из порождающего элемента (seed number), но рассредоточены в статистическом сходстве с случайным образом. Для генерации NumPy использует особенный алгоритм который имеет название Mersenne Twister.
Задать порождающий элемент последовательности случайных чисел можно так:

Seed это целое число. Каждая программа которая запускается с одинаковым seed`ом будет генерировать одинаковую последовательность чисел каждый раз. Это может быть полезно для отладки, но вообще нам не нужно задавать seed, на самом деле, когда мы запускаем программу несколько раз, мы хотим получать каждый раз разную последовательность чисел. Если эта команда не будет выполнена, то NumPy автоматически выбирает случайный seed (базирующийся на времени), который является разным при каждом запуске программы.
Массив случайных чисел из полуинтервала [0.0, 1.0) может быть сгенерирован так:

Функция rand может быть использована для генерации двумерных массивов, или можно использовать функцию reshape:

Для генерации единичного случайного числа на интервале [0.0, 1.0):

Для генерации случайного целочисленного числа в диапазоне [min, max) используем функцию randint(min, max):

В каждом нашем примере, мы генерировали числа из непрерывного равномерного распределения. NumPy также включает генераторы для других распределений, таких как: Бета, биномиальное, хи-квадрат, Дирихле, экспоненциальное, Фишера, Гамма, геометрическое, Гамбала, гипергеометрическое, Лапласа, логистическое, логнормальное, логарифмическое, мультиномиальное, многомерное нормальное, отрицательное биномиальное, нецентральное хи-квадрат, нецентральное Фишера, нормальное (Гаусса), Парето, Пуассона, степенное, Рэлея, Коши, Стьюдента, треугольное, Фон-Миса, Вальда, Вейбулла и Ципфа. Рассмотрим два примера.
Для генерации из дискретного распределения Пуассона при λ = 6.0,

Для генерации числа из нормального распределения (Гаусса) при среднем значении μ = 1.5 и стандартной девиации σ = 4.0:

Для получении числа из нормального распределения (μ = 0, σ = 1), без указания аргументов:

Для генерации нескольких значений используем аргумент size:

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

Заметим, что функция shuffle модифицирует уже существующий массив и не возвращает новый.

Некоторая дополнительная информация

NumPy включает еще много других функций о которых мы не упоминали здесь. В частности это функции для работы с дискретным преобразованием Фурье, более сложными операциями в линейной алгебре, тестированием массивов на размер / размерность / тип, разделением и соединением массивов, гистограммами, создания массивов из каких-либо данных разными путями, созданием и оперированием grid-массивов, специальными значениями (NaN, Inf), set-операции, созданием разных видов специальных матриц и вычислением специальных математических функций (Например: функции Бесселя). Также вы можете посмотреть документацию NumPy для более точных деталей.

Модули SciPy

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

Функция help обеспечит полезной информацией о SciPy:

>>> help(scipy)
Help on package scipy:

NAME
scipy
FILE
c:\python25\lib\site-packages\scipy\__init__.py
DESCRIPTION
SciPy — A scientific computing package for Python
===================================================
Documentation is available in the docstrings and
online at http://docs.scipy.org.

Contents
———
SciPy imports all the functions from the NumPy namespace, and in
addition provides:

Метод random.randrange() в Python — генерация случайных чисел в диапазоне

Модуль random в Python позволяет генерировать случайные числа. Сгенерированные числа представляют собой последовательность псевдослучайных чисел, которые основаны на используемой функции. В модуле random используются различные типы функций для генерации случайных чисел, такие как random.random(), random.randint(), random.choice(), random.randrange(start, stop, width) и многие другие.

Здесь мы обсудим функцию randrange() случайного модуля. Метод random.randrange() в Python используется для генерации случайного числа в диапазоне, указанном в ее параметре. Он принимает три параметра: начальный номер, конечный номер и ширину, которая используется для пропуска числа в диапазоне.

Синтаксис random.randrange()

Функция random.randrange() возвращает случайное целое число в заданном диапазоне, т.е. начало и конец. Функция random.randrange() принимает три параметра в качестве входных значений: start, stop и width. Из этих трех параметров start и width не являются обязательными.

  • Параметр start — это целое число с начальным или нижним пределом в случайном диапазоне. Если начальный параметр не передан в параметре, он принимает значение по умолчанию 0(ноль).
  • Параметр stop — это последнее число или целое число верхнего предела в случайном диапазоне.
  • Параметр width — это диапазон между каждым числом в случайной последовательности. Этот параметр является необязательным, и если параметр ширины не передается в параметре, он принимает значение по умолчанию 1(один).

Функция randrange(start, stop, width) не включает параметр конца при генерации случайного целого числа. Параметр stop является эксклюзивным и не генерируется случайным числом.

Посмотрите на эту функцию random.randrange(3, 30, 3), которая будет генерировать любое случайное целочисленное значение от 3 до 30, например 3, 6, 9, 12,… 27. Но эта функция никогда не включит 30 при генерации случайного числа.

Создание случайного числа в приложении всегда было важным, и оно имеет несколько применений в повседневной жизни в реальном времени. Например, создание и отправка случайного числа клиенту в качестве OTP (одноразового пароля) для выполнения безопасной транзакции. Другой пример генерации случайного числа используется во время игры в ludo для генерации случайного числа игральных костей.

Пример 1: random.randrange() генерирует случайное целое число в заданном диапазоне

В этом примере показаны все различные формы функции random.randrange().

Генерация случайного целого числа в заданном диапазоне

Пример 2: создание случайного диапазона целых чисел, кратного n

Давайте сгенерируем случайное целое число от 5 до 100, которое является диапазоном 5, например 5, 10, 25,…, 90, 95.

Создание случайного диапазона целых чисел, кратного n

Пример 3. Создание случайного целого числа определенной длины

Вы также можете сгенерировать случайное целое число определенной длины. Если вы хотите сгенерировать случайное число длиной 3, введите параметр start и stop в функции randrange() как наименьшее число длиной 3 цифры(100) и наименьшее число длиной 4 цифры(1000), потому что он генерирует случайное число Трехзначная форма от 100 до 999, где 4 цифры(1000) исключены.

Пример 4: Создание случайного отрицательного целого числа

Давайте посмотрим на пример, который генерирует случайное отрицательное целое число от -50 до -10.

Пример 5. Создание случайного положительного или отрицательного целого числа

Обратите внимание, что параметры start и stop, которые передаются в функции random.randrange(), должны быть в порядке возрастания, например random.randrange(5, 10) или random.randrange(-20, -10). Параметр запуска всегда меньше параметра остановки; в противном случае эта функция генерирует ошибку «Traceback (most recent call last) and raise ValueError empty range for randrange()».

Посмотрите на этот пример, в котором мы нарушаем правило, передавая параметр start больше, чем параметр stop в функции random.randrange(), которая генерирует сообщение об ошибке в следующем виде:

Сообщение об ошибке

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

  • choice()
  • randint()
  • sample()
  • sort()

random.choice()

В модуле Python random есть функция choice(), используемая для выбора случайного элемента из списка или другой последовательности. Функция random.choice() используется для возврата случайного элемента из списка значений.

Здесь последовательность параметров может быть строкой, списком, кортежем и random.choice() только одним случайным элементом.

В функции random.choices() k — количество возвращаемых элементов. Предположим, мы не упоминаем значение параметра k, random.choices() возвращает один элемент из последовательности или списка.

В этом примере мы предоставляем последовательность(список) в качестве параметра и возвращаем один случайный элемент.

Функция random.choices() в основном используется для возврата случайных элементов с различными возможностями. Эта функция также принимает вес(k) — количество случайных выборов. Например, мы хотим напечатать 3 случайных названия фильмов из списка 5 фильмов.

random.randint()

Функция Python random.randint() используется для генерации случайного целого числа в указанном диапазоне.

Функция random.randint() принимает два параметра: start (начальный диапазон) и stop (конечный диапазон). Оба параметра включаются при генерации случайного числа.

Пример random.randint(), генерирующий список случайных целых чисел:

В этом примере будет создан список из нескольких случайных целых чисел с помощью функции randint(). Создание списка из 5 случайных целых чисел от 1 до 100, включая оба значения.

Однако может существовать вероятность того, что функция random.randint() вернет повторяющееся число в выходном результате. Чтобы избежать дублирования случайного целого числа в результате, используйте функцию random.sample().

random.sample()

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

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

Пример random.sample() для генерации случайных элементов из списка без дубликатов:

В этом примере мы сгенерируем 10 случайных целых чисел в диапазоне от 0 до 100.

Если вы хотите создать список случайных чисел, каждое из которых должно быть кратным n, используйте параметр step функции range().

Например, создание 10 случайных целых чисел, кратных 5, из диапазона от 0 до 100 с использованием random.sample(range(0, 100, 5), 10).

List sort()

Функция Python sort() используется для сортировки случайных целых чисел списка в порядке возрастания (по умолчанию). Мы также можем отсортировать значение списка в порядке убывания, указав его порядок reverse = True. Значение по умолчанию для реверса — False.

Пример 1: sort() отсортирует элементы списка в порядке возрастания:

В этом примере мы сгенерируем случайный список из 5 чисел в диапазоне от 50 до 100 шириной 5 и отсортируем их с помощью функции sort().

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *