Как сгенерировать случайное нормальное распределение с указанием c стандартного отклонения - PullRequest
0 голосов
/ 05 марта 2020

Я уже использовал эту функцию:

np.random.seed(40)
np.random.normal(loc = 0, scale = 1, size = 10)

Однако я предполагаю, что значения должны быть между 1 и -1, верно? Но я получаю значения, которые больше 1 и меньше -1. Как это возможно?

Я получаю этот массив:

array([-0.6075477 , -0.12613641, -0.68460636,  0.92871475, -1.84440103,
       -0.46700242,  2.29249034,  0.48881005,  0.71026699,  1.05553444])

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

Возможное решение

Я сделал этот код, это нормально?

final_data = []
count = 0
a = 26 # standard deviation
b = 157 # mean

for i in range(2000):
    y = a*np.random.normal(0, 1, 1) + b # equation to multiply by the std and add the mean
    if y <= upper and y >= lower :
        final_data.append(y[0])
        count += 1
        if count > 608:
            break;

Где верхний и нижний - это среднее + стандартное и среднее - стандартное. Сначала я сгенерировал случайно распределенное число, а затем поместил его в уравнение. Если число находится между указанным диапазоном c, то я добавил его в список

Ответы [ 2 ]

2 голосов
/ 05 марта 2020

Нормальное распределение не ограничивает диапазон значений. Это просто означает, что 68% значений будут в пределах 1 стандартного отклонения от среднего; 95% с 2 стандартными отклонениями и 99,7% с 3 стандартными отклонениями. Теоретически вы можете получить любое значение от - бесконечности до бесконечности независимо от вашего стандартного отклонения.

1 голос
/ 05 марта 2020

Просто добавьте к предыдущему комментарию и ответу:

Если вы хотите нарисовать случайные числа из интервала, вы должны выбрать распределение с верхней и нижней границей. Например, равномерное распределение ставит равную вероятность для каждого числа между верхней и нижней границами. Для numpy вы можете проверить это здесь: https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.random.uniform.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...