Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Alg_Lang_All.doc
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

Генерация дискретных распределений с заданным характером распределения вероятностей

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

Пусть необходимо построить генератор дискретных величин X(1), X(2), … X(N), N=10, вероятности реализации которых, пропорциональны величинам PR(1), PR(2), … PR(N).

Для реализации такого алгоритма необходимо найти вероятности P(i) реализации i-ой величины X(i). Затем, на основе массива P(i) рассчитать левые LB(i), правые RB(i) границы i-ых подинтервалов на отрезке (0,1). Можно не вычислять массив RB(i), поскольку RB(i) = LB(i)+P(i).

X(i)

PR(i)

P(i)

LB(i)

RB(i)

1

10

0

2

32

3

120

4

220

5

100

6

56

7

45

8

30

9

70

10

120

Найдем массив вероятностей P(i). Найдем сумму всех PR(i):

Тогда массив вероятностей P(i) = PR(i)/S.

Левая граница первого отрезка должна быть равна нулю: LB(1) =0, соответственно правую границу первого отрезка находим как:

RB(1)= LB(1)+P(1)

Остальные элементы массивов LB(i) и RB(i) можно определить в цикле:

Цикл по i=2 до N

LB(i) =LB(i-1)

RB(i) = LB(i)+P(i)

Конец Цикла

Xr = rnd

Цикл по i=1 до N

Если xr>= LB(i) и xr < RB(i) тогда

Возврат X(i)

Конец Если

Конец Цикла

Генерация непрерывных распределений вещественных величин Псевдонормальное распределение

Рассмотрим очень простой метод генерации колоколообразного распределения вещественной величины. Этот метод основан на следующем факте: если сложить результаты N независимых экспериментов, возвращающих равномерно распределенные случайные величины от 0 до 1, тогда вероятность получения близких к нулю величин и близких к N будет низка, а вероятность получения значений близких к N/2 – велика. Само распределение будет иметь вид колокола и если N устремить к бесконечности, тогда получится так называемое «Нормальное» распределение.

Функция ГенераторПсевдоНормальногоРаспределения

n=10

x=0

Цикл по I от 1 до n

x=x+RAND()

Конец Цикла

Возврат x/10

Конец Функции

Рис.1 Гистограмма псевдонормального распределения

Вид гистограммы псевдонормального распределения. Количество испытаний 100000, интервалов – 100.

Генерация линейно возрастающего распределения

Распределение непрерывной вещественной величины с вероятностью линейно-возрастающей от 0 до 1 дает следующий, очень простой алгоритм

Функция ГенераторЛинейноВозрастающегоРаспределения

x=RAND()

Возврат x^0.5

Конец Функции

Рис.2 Гистограмма распределения x^0.5 для x=rand().

Гистограмма результатов 400000 испытаний линейно-возрастающего генератора непрерывных случайных величин от 0 до 1 (количество разбиений интервала (0,1) - 100) приведениа на рисунке 2.

Рис. 3 Гистограмма распределения x^1.5 для x=rand()

Рис.4 Гистограмма распределения x^2 для x=rand()

Рис.5 Гистограмма распределения x^4 для x=rand()

Рис.6 Гистограмма распределения x^0.2 для x=rand()

Рис.7 Гистограмма распределения x^0.7 для x=rand()

Для получения более сложного – комбинированного распределения можно использовать комбинацию степенных распределений. Так, если исходные базовые распределения определяются по формулам: , , … , где x=rand(), тогда формула для комбинированного распределения должна иметь вид:

Рис.8 Гистограмма распределения (x^0.2 + x^4)/2 для x=rand()

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]