Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Методические указания к реализации датчиков случайных чисел




 

Для моделирования работы описанной в задании ПрО необходимо иметь возможность получать псевдослучайные числа в различными распределениями вероятностей. Среди них есть как дискретные, так и непрерывные. Реализация нужного датчика случайных чисел основывается на использовании встроенной функции Qt

 

int qrand(); (или int rand();для С++)

Она возвращает целое число, равномерно распределенное на сегменте [0,RAND_MAX].

Особенности использования qrand:

1. При каждом запуске программы последовательность возвращаемых с помощью qrand псевдослучайных чисел будет одна и та же. Для исключения с некоторой вероятностью повторяемости при запуске программы необходимо выполнить в цикле вызов qrand. Параметром цикла может быть, например, количество миллисекунд времени старта программы. Тогда с вероятностью 0.001 используемая начальная последовательность не повторится.

2. Используется qrand не непосредственно, а как (double)random()=(double)qrand()/RAND_MAX, в результате чего последовательность приводится к диапазону [0,1].

 

 

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

 

Событие с вероятностью P.

Вычисляется r = random(), если r < P (или r ≤ P – почему можно так?), то считается, что событие произошла. Если условие не выполняется, то считается, что событие не наступило (произошло противоположное событие).

 

Полная группа N несовместных событие с вероятностями P1, P2, … , PN, где P1+P2+ … +PN = 1.

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

Q1 = P1,

Q2 = Q1 + P1,

QN-1 = QN-2 + PN-1,

Вычисляется число r = random(). Оно r последовательно сравнивается с Qi (r < Qi или r ≤ Qi). При первом выполнении условия считается, что произошло событие i. Если все условие не выполнились, то считается, что наступило событие N.

 

 

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

 

В заданиях для непрерывных распределений используется только экспоненциальное, так как понятие простейшего потока однозначно связано с ним. А именно, интервал времени между событиями простейшего потока событий имеет экспоненциальное распределение.

Общий принцип генерации псевдослучайных чисел, распределенных по закону с функцией распределения вероятностей F(x) состоит в следующем:

Равномерное распределение вероятностей в диапазоне [A,B]:

 

rравн = A + (B-A)*random()

Экспоненциальное распределение вероятностей со средним значением T (или интенсивностью λ = 1/Т):

 

rэксп = -T*log(random()) = -log(random())/λ

 

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 226.

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