Почему функция 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В этих двух случаях совсем не представлены одни и те же вещи, кроме параметров, которые описывают каждое распределение. Диапазоны, из которых взяты эти два распределения, называются поддержкой.

Другие вопросы по тегам