Пропустить до содержимого

Как использовать np.random.normal в Python?

[

Как использовать NumPy для генерации случайных чисел с нормальным распределением

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

Это распределение также называется нормальным распределением Гаусса или просто колоколообразным распределением. Последнее намекает на форму распределения, когда вы его отображаете:

Нормальное распределение симметрично относительно своего пика. Из-за этой симметрии среднее значение распределения, часто обозначаемое как μ, находится на этом пике. Стандартное отклонение, σ, описывает, насколько широко распределение разбросано.

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

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

Как вы узнаете, с помощью правильного кода Python вы можете проводить мощный статистический анализ. Чтобы получить код из этого руководства, нажмите на ссылку ниже:

Бесплатный бонус: [Нажмите здесь, чтобы скачать бесплатный образец

Shell

Terminal window
$ python -m pip install numpy matplotlib scipy

В дополнение к установке NumPy, вы установили Matplotlib и SciPy, поэтому готовы к работе.

Как использовать NumPy для генерации случайных чисел с нормальным распределением

Python

import numpy as np
rng = np.random.default_rng()
rng

RNG может генерировать значения из различных распределений, в том числе и из нормального распределения. Для генерации случайного числа из нормального распределения можно использовать функцию np.random.normal(). Эта функция принимает параметры loc - среднее значение и scale - стандартное отклонение. Например, чтобы сгенерировать случайное число из нормального распределения со средним значением 0 и стандартным отклонением 1, вы можете написать:

x = rng.normal(loc=0, scale=1)
x

x будет содержать случайное число из нормального распределения. Вы можете запросить несколько чисел, передав параметр size в функцию. Например, чтобы сгенерировать 100 случайных чисел из нормального распределения, вы можете сделать следующее:

x = rng.normal(loc=0, scale=1, size=100)
x

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

Создание гистограммы

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

import matplotlib.pyplot as plt
plt.hist(x, bins=10)
plt.show()

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

Указание среднего значения и стандартного отклонения

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

x = rng.normal(loc=5, scale=2, size=100)

Здесь loc=5 указывает на среднее значение 5 и scale=2 указывает на стандартное отклонение 2.

Работа с случайными числами в NumPy

NumPy также предоставляет другие функции для работы со случайными числами. Например, вы можете сгенерировать случайные целые числа из равномерного распределения с помощью функции np.random.randint(). Чтобы сгенерировать случайное целое число от 0 до 9, вы можете написать:

x = rng.randint(10)

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

x = rng.randint(5, 10)

Здесь числа будут сгенерированы в диапазоне от 5 до 9 (включительно).

Итерация по нормальному распределению с помощью центральной предельной теоремы

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

means = []
for _ in range(1000):
x = rng.normal(loc=0, scale=1, size=100)
mean = np.mean(x)
means.append(mean)
plt.hist(means, bins=30)
plt.show()

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

Заключение

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

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