Моделирование гамма-распределения

Гамма-распределение широко применяется в экономике и менеджменте, теории и практике надежности и испытаний, в различных областях техники, метеорологии и т.д. В частности, гамма-распределению подчинены во многих ситуациях такие величины, как общий срок службы изделия, время достижения изделием предельного состояния при коррозии, время наработки до к-то отказа, к - 1,2,... и т.д. Данное распределение подходит для описания спроса в экономико-математических моделях управления запасами (логистики).

Функция плотности гамма-распределения задается выражением

где а > 0, (3 > 0 — параметры распределения; T(Z) — гамма-функция:

В частном случае для целого Z

Для гамма-распределения матожидание и дисперсия определяются в соответствии с выражениями

Графики функции плотности вероятностей для различных значений параметров а и Р показаны на рис. 4.10. Следует отметить, что в случае значения параметра а = 1, гамма распределение совпадает с ранее рассмотренным экспоненциальным распределением с параметром р.

Функция плотности гамма-распределения

Рис. 4.10. Функция плотности гамма-распределения

Формула для моделирования случайных чисел с гамма-распределением с целочисленным параметром ос = п > 1 и параметром (3 = 1 имеет вид

Для того чтобы получить случайную величину с гамма-распределением с целочисленным параметром а и (3 ^ 1, достаточно умножить (4.18) на (3.

Пример. Составить программу моделирования случайных величин, отвечающих гамма-распределению с параметрами а = п, [3 = 1. Решение. Программа на языке C# имеет вид:

static void Main(string[] args)

{

Console.Write("Параметр распределения lambda: "); int lambda = int.Parse(Console.ReadLine());

Console.Write("Количество случайных величин n: "); int m = int.Parse(Console.ReadLine());

Random random = new Random();

double p, r, x;

for (int i = 0; i < n; i++)

{

P = l;

for (int k = 0; k < lambda; k++)

{

r = random.NextDouble(); p *= r;

}

x = -Math.Log(p);

Console.WriteLine("x[{0}] = {l:f3}", i + 1, x);

}

Console.WriteLine("Моделирование завершено");

Console.ReadLine();

}

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >