Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
112
Добавлен:
11.04.2015
Размер:
1.55 Mб
Скачать

§2 Генерирование значений дискретных случайных величин.

Дана дискретная случайная величина ξ с рядом распределения:

значение

x1

x2

x3

xn

вероятность

P1

P2

P3

Pn

и дан датчик значений случайной величины подчиненной равномерному распределению на отрезке [0,1]

Надо написать программу, которая генерирует значения ξиспользуяη. Рассмотрим следующий алгоритм:

Cначала вычисляем:

(1)

Для получения значений ξiпоступаем следующим образом:

генерируем значение ηи находимi, для которой выполняется равенство

(2) Qi – 1<=η<=Qi

затем присваиваем генерируемое значение ξ:=xi

Утверждение. Описанный алгоритм корректный

надо доказать, что:

(3) P= {ξ=xi} =Pi

Где ξ порождается описанным процессом.

Мы знаем, что для равномерного на [a,b] распределения

(*)

P{ξ=xi} =P{Qi-1 <=η<=Qi} = {(*)} =Qi–Qi-1= (1) =Pi

Напишем фрагмент программы, реализующий этот алгоритм:

η := random

for i := 1 to n do begin

if η < Q[i] then begin

k := i

goto M

end;

end;

M:ξ:=x[k]

Очевидно, что время вычисления пропорционально числу выполнения цикла или числу проверки неравенств.

Пример:Случайная величина задана рядом распределения

Значения

-1

0

2

5

Вероятности

0,05

0,05

0,2

0,7

В соответствии с описанием вычисляем:

Q[0] = 0

Q[1] = 0,05

Q[2] = 0,1

Q[3] = 0,3

Q[4] = 1

Подсчитаем среднее время сравнений для приведенной выше программы

Среднее число проверок = 1 *0,05 + 2 * 0,05 + 3 *0,2 + 4 * 0,7 = 3,55

Задача:придумать алгоритм, у которого число сравнений меньше уменьшенного времени.

Очевидно, что tбудет меньше, если сначала будет самая большая вероятность, затем 2я и т.д.

В данном случае, мы предварительно преобразуем значение к виду,

Значения

5

2

-1

0

Вероятности

0,7

0,2

0,05

0,05

а затем как в алгоритме.

Очевидно, что время стало меньше, проверим на прежнем примере

1 * 0,7 + 2 * 0,2 + 3 * 0,05 + 4 * 0,05

время уменьшилось

Описанное выше, являются универсальным пригодным для любого распределения. Однако, в некоторых частных случаях можно использовать более простые методы, например пусть необходимо генерировать значение игральной кости. Очевидно, можно использовать следующее равенство:

(4)ξ :=η* 6 – округление до большего

В обще случае, если необходимо генерировать значение случайных величин можно использовать

(5) ξ :=η*n

Если же необходимо генерировать случайные величины от 0 до m, то

(6) ξ:=η* (m+ 1)

§3 Генерирование случайных величин с непрерывным законом распределения (методы)

Задача: надо генерировать значение непрерывной случайной величины ξ законом распределенияF§(x), используя значение равномерно распределенной случайной величиныηє [0,1].

Сначала мы опишем общий метод:

1) генерируется случайные значения так, что выполняется равенство при нахождениии выполняется равенство:

(1)=Fξ ()

значение генерируемой случайной величины и равно

Утверждение. Описанный метод корректен.

Доказательство: мы должны доказать, чтоξ- генерируемая подчиняется закону распределения случайной величины ξ, для этого следует показать, что у ξгенерта жеFξ(x), что и уξ.

Сначала заметим, что P{<y} =P{0 <=<=y} =F(y) –F(0) =

Получили:

(*) P{ < y} = y

Fξ генер (x) = P{ξгенер < x} = P{ < Fξ (x)} = {(*)} = Fξ (x)

Пример:(генерирование случайной величины, подчиняющейся экспоненциальному распределению).

λ= -ln(1 –η)

= - (1 /λ) *ln(1 -)

(1 - ) подчиняется тому же распределению, что и, поэтому можно упростить.

(2)= - (1 /λ) *ln()

Этот метод является общим, однако для многих случайных величин существуют специально более простые методы, не связанные с решением уравнения. Рассмотрим некоторые такие методы.