Табличный метод генерации нормально распределенных чисел
Для этого нормальное число можно взять из справочника в таблице функции Лапласа и получить случайное число по методу взятия обратной функции (см. лекцию 24): x = F–1(r), где F — интегральная функция Лапласа.
Технически это означает, что надо разыграть случайное равномерно распределенное число r из интервала [0; 1] стандартным ГСЧ (см. таблицу абсолютно случайных проверенных чисел), найти равное ему число в таблице значений функции Лапласа в столбце F и по строке определить случайную величину x, соответствующую этому числу.
Недостатком метода является необходимость хранения в памяти компьютера всей таблицы чисел функции Лапласа.
Общая идея метода следующая: требуется сложить случайные числа с любым законом распределения, нормализовать их и перевести в нужный диапазон нормального распределения.
Допустим, что нам надо в целях имитации получить ряд случайных чисел x, распределенных по нормальному закону с заданными математическим ожиданием mx и среднеквадратичным отклонением σx.
Сложим n случайных чисел, используя стандартный ГСЧ:
Согласно ЦПТ числа V образуют ряд значений, распределенный по нормальному закону. Эти числа тем лучше описывают нормальный закон, чем больше параметр n. На практике n берут равными 6 или 12. Заметим, что закон распределения чисел V имеет математическое ожидание mV = n/2, σV = sqrt(n/12). Поэтому он является смещенным относительно заданного произвольного.
С помощью формулы z = (V – mV)/σV нормализуем этот ряд. Получим нормализованный закон нормального распределения чисел Z. То есть mz = 0, σz = 1.
Формулой (сдвиг на 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.