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

3.2.3. Формирование случайных чисел на эвм

При исследовании систем методом имитационного моделирования существенное внимание уделяется учету случайных факторов. В качестве математических схем, используемых для формализации этих факторов, используются случайные величины и случайные процессы. Формирование на ЭВМ реализаций случайных объектов любой природы сводится к выработке и преобразованию случайных чисел.

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

Рассмотрим основные способы образования последовательности случайных чисел.

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

Обычно этим требованиям удовлетворяет совокупность случайных чисел с равномерным распределением в интервале (0,1). С их помощью можно конструировать как случайные события с любой заданной вероятностью, так и случайные величины , имеющие любой закон распределения.

Напомним основные свойства равномерного распределения. Непрерывная случайная величина Х имеет равномерное распределение на интервале (а,в), если ее функция плотности равна

F(x)={ 1/(b-a) a<x<b

0 вне этого интервала

Математическое ожидание и среднее квадратическое отклонение соответственно равны:

Mx=(a+b)/2, Sx=(b-a)/(2 3)

Программные способы формирования случайной последовательности чисел, как правило используют рекуррентную формулу вида xk+1=f(xk) . Полученные таким образом случайные числа не являются случайными, но отвечают установленным критериям случайности. Поэтому их называют "псевдослучайными" числами.

Большинства программ получения псевдослучайных чисел используют метод:

xk+1=(xka+c)mod m,

С помощью которого получаются равномерно распределенные целые числа в пределах от 0 до m-1 . для n -разрядных целых двоичных чисел m обычно равно 2n , а x0 , а и с – целые числа из той же области. Рекомендуются следующие правила по выбору x0 , а и с.

-x0 – может быть произвольным.

-выбор а должен удовлетворять следующим требованиям:

а – простое число;

a(mod8)=5

m<a<m- m

-в качестве с следует выбирать нечетное число, такое, что

c/m=1/2-(1/6) 3 =0.21132

библиотечная функция rand() ( прототип в файле <stdlib.h>) генерирует последовательность целых псевдослучайных чисел равномерно распределенных в интервале (0, 32767). Посредством функции srand() можно установить или восстановить исходное число последовательности псевдослучайных чисел.

Если целочисленное Х находится в пределах от 0 до m , то дробь xk/m попадает в интервал (0,1).

Можно использовать директиву define

Define RND (float)rand()/32768.0

Переход от стандартного интервала (0,1) к произвольному (а,в) осуществляется по формуле

y=a+(b-a)x

Где y принадлежит равномерному распределению на интервале (a,b), а х – равномерному распределению на (0,1)

Нормальный закон наиболее часто встречается на практике. Он характеризуется плотностью вероятности

2 2

F(x)=1(s 2x)n-(x-m) /2s

Где m -математическое ожидание, s - среднее квадратическое отклонение величины Х.

Для получения последовательности случайных чисел xk , имеющих нормальное распределение воспользуемся центральной предельной теоремой и построим xk в виде сумм последовательных случайных чисел, имеющих равномерное распределение в интервале (0,1).

Стандартный алгоритм формирования случайных чисел Х, распределенных по нормальному закону с математическим ожиданием а и средним квадратическим отклонением s , имеет вид

12

y= ∑qk-6, x=a+sy

k=1

qk принадлежит равномерному распределению на интервале (0,1), а у - нормальному на интервале (0,1) и х тоже нормальному , но на интервале (а,s).

Для формирования возможных значений случайной величины У с заданным законом распределения исходным материалом служат реализации случайной величины Х, имеющей равномерное распределение в интервале (0,1). Один из способов такого преобразования состоит в выполнении некоторой операции над числом Х.

Идея построения такой операции вытекает из теоремы: если величина У имеет плотность распределения f(y) , то распределение случайной величины

X= dy

Является равномерным в интервале (0,1).

Тогда, чтобы получить число, принадлежащее совокупности случайных чисел {yk} , необходимо разрешить относительно y уравнение:

dy=xk

Применим это правило для получения случайных чисел имеющих показательный закон распределения

f(y)=λe-λy (y>0)

Получим для верхнего предела интегрирования ук

Где ук -случайное число, имеющее равномерное распределение в интервале (0,1) или, после вычисления интеграла

λ-e-λy=xk

Разрешая это уравнение относительно Уk , имеем

yk=(-1/λ)ln(1-xk)

Учитывая, что случайная величина 1-xk , имеет также равномерный закон распределения в интервале (0,1), соотношение можно записать

yk=(-1/λ)ln(xk)

Таким образам могут быть построены процедуры и для других законов распределения.