Почему функция randn возвращает число больше 1?
Я думал randn
возвращает случайное число, которое принадлежит нормальному распределению со средним значением 0 и стандартным отклонением 1. Поэтому я ожидаю получить число в диапазоне (0, 1). Но то, что я получаю, это число не в диапазоне (0,1).
Что я делаю неправильно?
3 ответа
Вы думаете о равномерном распределении. Теоретически нормальное распределение может иметь очень большие числа с очень низкой вероятностью.
randn
имеет среднее значение 0 и стандартное отклонение 1. Нормальным распределением является форма колокольчика / гауссова форма с наивысшей вероятностью в среднем и вероятностью спада относительно стандартного отклонения.
То, что вы ищете, это rand
, который "выбирает" из равномерного случайного распределения, который дает числа, ограниченные между 0 и 1 с четной вероятностью во всех точках.
Вы путаете нормальное распределение с равномерным распределением.
Еще один возможный источник путаницы:
Нормальное распределение со средним 0
и дисперсия 1
часто обозначается N(0,1). Это иногда называют стандартным нормальным распределением и подразумевает, что выборки взяты из всех действительных чисел, то есть диапазона (−∞,+∞), со средним 0
и дисперсия 1
, Стандартное отклонение также 1
в этом случае, но это обозначение определяет дисперсию (многие облажаются). Преобразование N(μ, σ2) = μ + σ N(0,1), где μ - среднее значение, σ2 - дисперсия, а σ - стандартное отклонение, очень полезно.
Аналогично, непрерывное равномерное распределение по открытому интервалу (0,1) часто обозначается U(0,1). Это часто называют стандартным равномерным распределением и подразумевает, что выборки выбираются равномерно только из диапазона (0,1). Точно так же полезно преобразование U(a, b) = a + (b - a) U(0,1), где a и b представляют ребра масштабированного интервала.
Обратите внимание, что 0
и 1
В этих двух случаях совсем не представлены одни и те же вещи, кроме параметров, которые описывают каждое распределение. Диапазоны, из которых взяты эти два распределения, называются поддержкой.