Табличный метод генерации нормально распределенных чисел
Для этого нормальное число можно взять из справочника в таблице функции Лапласа и получить случайное число по методу взятия обратной функции: x = F–1(r), где F – интегральная функция Лапласа.
Технически это означает, что надо разыграть случайное равномерно распределенное число r из интервала [0; 1] стандартным ГСЧ, найти равное ему число в таблице значений функции Лапласа в столбце F и по строке определить случайную величину x, соответствующую этому числу.
Недостатком метода является необходимость хранения в памяти компьютера всей таблицы чисел функции Лапласа.
Метод генерации нормально распределенных чисел, использующий центральную предельную теорему
Общая идея метода следующая: требуется сложить случайные числа с любым законом распределения, нормализовать их и перевести в нужный диапазон нормального распределения.
Допустим, что нам надо в целях имитации получить ряд случайных чисел x, распределенных по нормальному закону с заданными математическим ожиданием mx и среднеквадратичным отклонением σx.
1. Сложим n случайных чисел, используя стандартный ГСЧ:
Согласно ЦПТ числа V образуют ряд значений, распределенный по нормальному закону. Эти числа тем лучше описывают нормальный закон, чем больше параметр n. На практике n берут равными 6 или 12. Заметим, что закон распределения чисел V имеет математическое ожидание mV = n/2, σV = sqrt(n/12). Поэтому он является смещенным относительно заданного произвольного.
2. С помощью формулы z = (V – mV)/σV нормализуем этот ряд. Получим нормализованный закон нормального распределения чисел Z. То есть mz = 0, σz = 1.
3. Формулой (сдвиг на mx и масштабирование на σx) преобразуем ряд Z в ряд x: x = z · σx + mx.
Пример. Смоделировать поток заготовок для обработки их на станке. Известно, что длина заготовки колеблется случайным образом. Средняя длина заготовки составляет 35 см, а среднеквадратичное отклонение реальной длины от средней составляет 10 см. То есть по условиям задачи mx = 35, σx = 10. Тогда значение случайной величины будет рассчитываться по формуле: V = r1 + r2 + r3 + r4 + r5 + r6, где r – лучайные числа из ГСЧрр [0; 1], n = 6.
X = σx · (sqrt(12/n) · (V – n/2)) + mx = 10 · sqrt(2) · (V – 3) + 35
или
X = 10 · sqrt(2) · ((r1 + r2 + r3 + r4 + r5 + r6) – 3) + 35.
Метод Мюллера
Совсем простым методом получения нормальных чисел является метод Мюллера, использующий формулы: Z = √(–2 · Ln(r1)) · cos(2π · r2), где r1 и r2 – случайные числа из ГСЧрр [0; 1].
Можно также воспользоваться аналогичной формулой Z = √(–2 · Ln(r1)) · sin(2π · r2), где r1 и r2 — случайные числа из ГСЧрр [0; 1].
Пример. Материал поступает в цех один раз в сутки по 10 штук сразу. Расход материала из цеха случайный по нормальному закону с математическим ожиданием m = 10 и среднеквадратичным отклонением σ = 3.5. Вычислить вероятность дефицита на складе при запасе материала в начальный момент времени 20 штук.
При реализации в среде моделирования Stratum решение задачи будет выглядеть следующим образом.
|
|
p(x) = 1/(x * normal_sigma * sqrt(2*pi)) * exp( -(log(x)-normal_mean)2 / (2*normal_sigma2) ) для x > 0, где normal_mean = log(mean2/sqrt(sigma2 + mean2)) и normal_sigma = sqrt(log(1 + sigma2/mean2)). Другими словами, "логарифмически-нормальный закон" встречается у случайных чисел, логарифм которых распределен нормально. Это распределение широко используется в теории надежности; с его помощью аппроксимируются распределения полей атмосферных и промышленных помех.
5) с логнормальным распределением:
, где , , где – случайный процесс с равномерным распределением в диапазоне [0,1].