Генерация случайных чисел может быть очень полезна во многих отношениях. Например, вы можете создать случайный набор данных для тестирования вашей модели машинного обучения или использовать случайный набор данных для практики визуализации. Однако генерировать случайный набор чисел путем ввода каждого числа очень обременительно. Вместо этого вы можете легко сгенерировать случайный набор чисел в Python с библиотекой Numpy. В этой статье мы рассмотрим некоторые способы генерации случайных чисел с помощью NumPy.

Давайте сначала импортируем NumPy.

import numpy as np

np.random.seed() и np.random.rand()

Что значит установить даже «сид»? Это может показаться незнакомым, но установка начального числа — очень важный момент в процессе генерации случайных чисел. С одним и тем же семенем каждый раз будет появляться один и тот же набор чисел.

np.random.rand() возвращает случайные значения от 0 до 1 в заданной форме.

Используя np.random.seed() и np.random.rand(), давайте облегчим понимание того, что они делают, на самом деле запустив их.

Приведенная выше команда, очевидно, вернула случайный набор из пяти значений в диапазоне от 0 до 1. Однако повторный запуск той же команды не вернет тот же набор значений, поскольку мы не установили начальное число.

Как видно выше, мы выполнили одну и ту же команду np.random.rand(5) пять раз, но каждый раз результат был разным.

Что произойдет, если мы посадим семя? Проверьте ниже.

Установка seed=0 заставляла np.random.rand(5) возвращать один и тот же набор случайных значений при каждом запуске.

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

С np.random.rand(5) была возвращена матрица (1 X 5). Что, если мы хотим вернуть матрицу (2 X 3)? Мы просто запускаем np.random.rand(2, 3) ! Очень просто.

Вы можете продолжать увеличивать размер, добавляя параметр к np.random.rand() . Например, если вы хотите, чтобы возвращался массив трехмерных фигур, вы просто добавляете к параметру еще одно целое число.

np.random.randint()

np.random.randint мало чем отличается от np.random.rand, за исключением того, что возвращает одно целое число. Базовую форму этой функции можно увидеть ниже.

np.random.randint(low, high, size)

Например, запуск np.random.randint(10, 15, 10) вернет пять целых чисел от 0 до 10 с заменой. Вы можете ясно видеть, что некоторые числа появляются ниже более одного раза.

Если вы не введете размер, np.random.randint вернет только одно целое число.

np.random.normal ()

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

np.random.normal(size, loc, scale)

Size — это размер возвращаемого массива np.array, а loc и scale — среднее значение и стандартное отклонение соответственно.

Вот один пример.

Мы создали 1000 различных значений со средним значением 10 и стандартным отклонением 1. Их распределение можно увидеть на графике выше, и они, очевидно, соответствуют нормальному распределению со средним значением = 10.

np.случайный.выбор()

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

Теперь, когда мы создали набор случайных значений, пришло время случайным образом выбрать из них. np.random.choice() позволяет нам делать такую ​​работу.

np.random.choice(a, size, replace, p)

a — это ndarry, из которого мы выбираем значения, size — форма вывода, replace принимает логическое значение (True, если значение может быть выбрано несколько раз), а p принимает вероятности, связанные с каждой записью в a.

Давайте облегчим понимание на примере.

В приведенном выше примере мы выбираем десять значений из [1, 2, 3, 4, 5] с заменой, но заданы вероятности. Вероятность выбора 1, 2, 3 или 4 равна 0,1, а вероятность выбора 5 равна 0,6. Поэтому мы можем ожидать, что 5 будет выбираться чаще, чем другие значения, и результат показывает ожидаемый результат с шестью 5. Конечно, имейте в виду, что размер p должен быть равен размеру a.

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

Надеюсь, эта статья оказалась для вас полезной, и спасибо за прочтение :)