Распределение Гаусса с использованием C ++ без среднего и стандартного отклонения

У меня есть равномерно сгенерированные случайные числа. Теперь я хочу генерировать случайные числа, используя распределение Гаусса (нормальное). Я не знаю среднего и стандартного отклонения. Я прочитал эту статью: http://www.johndcook.com/cpp_TR1_random.html#normal, но это требует среднего и стандартного отклонения! Я также знаю, что обычно используется преобразование Бокса-Мюллера. Это правильно дает значения с нормальным распределением. но опять же я не знаю среднего и стандартного отклонения. Никакого повышения, пожалуйста. Кто-нибудь может помочь, пожалуйста?


person Community    schedule 22.11.2012    source источник
comment
Вы застряли, если не знаете среднее значение и дисперсию (стандартное отклонение).   -  person David Hammen    schedule 22.11.2012
comment
Спрашивать, как сгенерировать гауссово распределение без среднего и стандартного отклонения, немного похоже на просьбу о равномерном распределении без минимального и максимального значения.   -  person Rook    schedule 22.11.2012
comment
Что вы знаете о желаемом распределении? Я предполагаю, что у вас есть какие-то знания о том, как он должен себя вести (иначе что мешает вам выбирать среднее значение и дисперсию случайным образом?) ...   -  person Grizzly    schedule 22.11.2012
comment
Мне нужно повторять циклы for с интервалом в 4 градуса. Интервал [-45: +45] нужно перешагнуть на 4 градуса [я сделал это]. Затем в случае этих 4 степеней мне нужно предположить распределенное испытание по Гауссу с детализацией 2 степени. Поэтому я не знаю, как предположить среднее и стандартное распределение для этого следа.   -  person    schedule 22.11.2012
comment
@Grizzly, что вы имеете в виду под случайным выбором среднего и дисперсии? как это делается?   -  person    schedule 22.11.2012
comment
Может быть, я хочу задать вопрос: как преобразовать равномерное распределение [-45 45] в нормальное? как выбрать среднее и стандартное отклонение?   -  person    schedule 22.11.2012
comment
Среднее значение - это центральная точка распределения, пик кривой. Стандартное отклонение эффективно описывает, насколько «разбросано» распределение. Вы можете использовать Matlab или Excel или какую-либо подходящую бесплатную альтернативу для визуализации некоторых примеров распределений и выбора подходящего значения на глаз, в отсутствие каких-либо более принципиальных критериев.   -  person Rook    schedule 22.11.2012


Ответы (1)


Когда вы генерируете равномерно распределенные (в сегменте) случайные числа, вам нужны два параметра: нижняя граница сегмента и верхняя граница сегмента. Обычно это 0 и 1 соответственно, поэтому вы получаете числа из диапазона [0..1].

Теперь, чтобы сгенерировать нормально распределенные числа, вам также понадобятся два параметра: среднее значение и стандартное отклонение. Однако они имеют другое значение. Среднее - это число, вокруг которого будут собираться ваши сгенерированные числа: если вы укажете, скажем, 15, вы, вероятно, увидите 11, 17, 13, 21, 9, 12, 14, 11 и т. Д., Но не (обычно) 290. или -562. А стандартное отклонение (сигма) в основном определяет, насколько далеко сгенерированные числа могут отклоняться от среднего. Строго говоря, может быть сгенерировано число любой величины: даже если вы укажете среднее значение 0 и сигму 1e-6, вы все равно можете получить 1000, но это маловероятно.

Как показывает практика, почти все сгенерированные числа будут находиться в [mean - 3 * sigma .. mean + 3 * sigma] диапазоне, и держу пари, что вы не увидите ничего за пределами [mean - 5 * sigma .. mean + 5 * sigma] диапазона в своей жизни.

Существует понятие «стандартного» нормального распределения: со средним значением = 0, сигма = 1. Это означает, что вы получите числа в основном в диапазоне [-3..3].

Надеюсь, это немного поможет!

person Joker_vD    schedule 22.11.2012