Моделируем
F()=Получаем путём решения уравнения
Листинг программы:
uses crt;
var i: integer;
x,q: real;
begin
randomize;
clrscr;
writeln('e - ravnomerno raspredel. sl. velichina');
writeln('n - sl. vel. s plotnost','''','u veroyatnosti f(n)=tg(n)/ln(sqrt(2)),');
writeln(' n=0..Pi/4');
writeln;
writeln('e ');
writeln('n ');
for i:=1 to 10 do begin
q:=random;
x:=arctan(sqrt(exp(q*ln(2))-1));
gotoxy((i-1)*6+4,5);
write(q:6:2);
gotoxy((i-1)*6+4,6);
write(x:6:2);
end;
readln;
end.
Результат выполнения программы:
e - ravnomerno raspredel. sl. velichina
n - sl. vel. s plotnost'u veroyatnosti f(n)=tg(n)/ln(sqrt(2)),
n=0..Pi/4
e 0.05 0.23 0.79 0.11 0.95 0.66 0.99 0.94 0.31 0.82
n 0.18 0.40 0.70 0.27 0.77 0.65 0.78 0.77 0.46 0.72
Метод Неймана.
Данный метод в настоящее время является наиболее распространенным в практике моделирования случайных величин. Суть его заключается в следующем. Пусть требуется смоделировать случайную величину , определенную на конечном интервале (а,b) и имеющую заданную плотность распределения р(х)с.
![]()
C
У=p(x)











ξ’’
0 α ξ́́́́́’ b X
Введем в рассмотрение две независимые случайные величины 1 и 2 . равномерно распределенные на интервале (0,I), а также случайные величины =a+(b-a)1 и =c2. Тогда случайная величина , определяемая формулой
= , если <р() .
имеет плотность вероятностей, равную р(х).
Блок-схема алгоритма моделирования случайной величины по методу Неймана имеет следующий вид:
Моделируем 1
Моделируем 2
:=a+(b-a)
1
:=c2
нет
да
:=
Листинг программы:
uses crt;
var i: integer;
e1,e2,c: real;
begin
randomize;
clrscr;
writeln('n - sl. vel. s plotnost','''','u veroyatnosti f(n)=tg(n)/ln(sqrt(2)),');
writeln(' n=0..Pi/4');
writeln(' sup(f(n))=1/ln(sqrt(2))');
writeln('e1 - sl. velichina ravnomerno raspredel. na [0; sup(f(n))]');
writeln('e2 - sl. velichina ravnomerno raspredel. na [min(n); max(n)]');
writeln;
writeln('e1 ');
writeln('f(e2) ');
writeln('n ');
repeat
e1:=2*random/ln(2);
e2:=Pi*random/4;
c:=2*sin(e2)/(cos(e2)*ln(2));
if e1<c then begin
i:=i+1;
gotoxy((i-1)*6+7,7);
write(e1:6:2);
gotoxy((i-1)*6+7,8);
write(c:6:2);
gotoxy((i-1)*6+7,9);
write(e2:6:2);
end;
until i>=10;
readln;
end.
Результат выполнения программы:
n - sl. vel. s plotnost'u veroyatnosti f(n)=tg(n)/ln(sqrt(2)),
n=0..Pi/4
sup(f(n))=1/ln(sqrt(2))
e1 - sl. velichina ravnomerno raspredel. na [0; sup(f(n))]
e2 - sl. velichina ravnomerno raspredel. na [min(n); max(n)]
e1 0.17 1.84 1.00 0.65 0.87 2.75 1.51 1.03 0.96 0.44
f(e2) 0.58 2.18 1.08 2.38 2.42 2.77 1.62 2.70 2.03 1.48
n 0.20 0.65 0.36 0.69 0.70 0.77 0.51 0.75 0.61 0.47
Метод суперпозиций.
Основная идея этого метода сводятся к следующему. Пусть заданная функция распределения F(х) случайной величины может быть представлена в виде:
![]()
(1)
соответственно плотность распределения
, CX
0 , x=1
,2 ……m
.
Из (1) при х
следует, что
(2)
Выражение (2) позволяет ввести в рассмотрение дискретную случайную величину с распределением:
-
xi
1
2
3
………….
m
Pi
C1
C2
C3
………….
Cm
так , что Р{=x}=СX
Пусть - равномерно распределенная случайная величина. Нетрудно показать, что если по величине получить значение х случайной величины , а затем получить значение случайной величины либо с помощью метода обратных функций по известной функций распределения FX(х), либо с помощью метода Неймана по известной плотности распределения pX(х) , то функция распределения будет равна F(х). Следует отметить, что равномерно распределенные случайные величины, используемые как в методе обратных функций (2), так и в методе Неймана (2 , 3), должны быть независимы с 1.
Блок-схемы алгоритмов моделирования случайной величины по методу суперпозиций:
Моделируем 1
Моделируем 1

Моделируем
= x
Моделируем
=
x

Моделируем 2
Моделируем
2,3

