. , , ,

,,,

..

-------------------------------------------------------------------------------------------------------

-


: 4301 ..

: ..

:5(.)

1996

1.................................................................................................3

2. ................................................4

2.1. ........4

2.2. .............................5

2.3. ....................................6

2.4. ...........................6

3. .............................7

3.1. .................................7

3.2. .............................................7

3.3. ..............................................8

3.4. .........................................9

3.4.1. ,

.......................................................9

3.4.1.1. ..............................................................9

3.4.1.2. ..........................................................12

3.4.1.3. ...................................................13

3.4.2. ,

.................................................14

3.5.

.............................................................................................18

4. ...................19

5. ............................................................................................20


2.


2.1.

(Q-) .


1


Π


2



3

. 1 Q -

:

-

-

1 - 3 -


2.2.

tp - 頠

tgz1 - 1-

tgz2 - 2-

tgz3 - 3-

tm -

k -

nz - :

nz=0 - ꠠ ___

nz=i - i- ( i=1-3 )

pz1 - 1

pz1=1 - 1

pz1=0 - 1

pz2 - 2

pz2=1 - 2

pz2=0 - 2

pz3 - 3

pz3=1 - 3

pz3=0 - 3

znw -

znw=0 - 򠠠 ___

znw=i - i ( i=1-3 )

wz -

wz=0 -

wz=i - i

ocher[50] -

n -

w2 - . 2-

, :

- 頠 10

- 頠 0.33

- 1- 젠 16

- 2- 젠 17

- 3- 젠 18

- ̠ 0.8

2.3.

 

(emb) , . emb

0.1 .

 

2.4.

 

.

emb

160

1


170

2


180

3



2.

100 emb .

, 160 emb. 100 emb 170 emb. 2- ( 60 emb) 8 emb. 100 emb , . 70 emb 8 emb. 180 emb ,

.

=300 emb . , . . . . 2- , , 33,3 %.

500 , (500/3)*300=50.000 emb. 500*8=4000 emb , 8%.

3.

 

3.1.

Borland C++. , , . , ++ , , . ++ , .

1.

3.2.

2.2.

, .

ocher[50] ( ). ( ztgz1, ztgz2, ztgz3, ztm, zk ) .

:

. , k . t=t+emb. , ( switch (cikl) ). switch (nz) . . . , . , . . . , .

3.3.

 

.

:

100

1- 160

2- 젠 170

3- 젠 180

̠ 8

頠 500

. , . 2- .= 33%

:

, .

: : 頠 2

1- 젠 1

2- 젠 1

3- 젠 1

̠ 1

3.4.

 

3.4.1.

 

3.4.1.1.

 

- , . (), () ( ).

, . (), , .

gener.

, . . : , , , .

( ) analize.

3 :

1) vihod1.dat

: 50

: 30

: 1000

: 25

: 2

2) vihod2.dat

: 50

: 30

: 1000

: 25

: 3

3) vihod3.dat

: 70

: 35

: 1000

: 25

: 6

analize.

:

vihod1.dat

 



vihod2.dat

vihod3.dat


: 3- 2 .

vihod1.dat vihod2.dat vihod3.dat
1 0.02 0.005 0.00059
2 0.96 0.996 0.999
3 . 0.39 0.51 0.49
4 0.078 0.086 0.085
5 .. 0.279 0.294 0.292
6 -1.92 -1.024 -1.12

r(t) r(t)

1 1

0 t 0 t

5 5

vihod1.dat vihod2.dat

r(t)

1

0 t

5

vihod3.dat

:

1) .

2) 3- ⠠

vihod3.dat , . .

.

.

3.4.1.2.

 

.

: n - X1 X2. X1><0, X2><0. X1 X2 Y , 2n - : Y=X1*X2. 2n - Y n - 1 2 1, 2 . .

2.

vi_gpsc1.dat analize.

. .
1 . . 0.00068
2 . 0.99995
3 . 0.5 0.4928
4 0.083 0.07822
5 .. 0.1887 0.2796


:

-:

2=12.9

0.166 .

:

max| F(x)-F*(x) | = 0.0885

0.999 .

r(t)


1

0 t

5

. 3. .

:

, , . .:

1)

2) , (. 3.)

3.4.1.3.

 

. ( ) : .. ..; , .. .

, .

, vihod3.dat , .. .

3.4.1.2. , ( ) , random( ), .

3.4.2. ,

 

.

. . , analize. .

N(m,s)

-

s(1,1/l)=(l)

f(x)

1 -(x-m)

f(x)=-------- e 2s

sÖ2p

-lx

f(x)=l e

| m | <

s > 0

l > 0
堠 m 蠠 D

m

s

1/l

1/l

______

xi=Ö-2 ln z1 cos2p z2

xi+1=Ö-2 ln z1 cos2p z2

( m=0; D=1 )

1

xi=- ---- ln zi

l

.

( 3)

1 .. 11 12.31
2 ..- 24 25.23
3 . 16 16.02
4 2 2.07
5 .. 1 1.439
6 . 0 0.35
7 0 2.716

. .


:

-:

2=0.0000813

0.999 .

:

max| F(x)-F*(x) | = 0.0823

0.999 .

r(t)

1

0 t

5

. 4. .

:

, , , . .

-

,

-

,

- ,

(. 4.)

2- 3- , , . 17 18 .

( 3)

1 .. 0.5 0.8
2 ..- 3.5 2.358
3 . 0.8 1.06
4 0.08 0.066
5 .. 0.5 0.2575
6 . 0 1.682
7 0 1.097

.


:

-:

2=2310

0.999 .

:

max| F(x)-F*(x) | = 0.023

0.91 .

r(t)

1

0 t

5

. 5. .

 

:

, , , . .

-

,

-

,

- ,

(. 5.)

3.5.

. :

- - random( )

(0,1) - 蠠

.

- norm-1.dat , m=16 , D=2

1- .

- norm-2.dat , m=17 , D=2

2- .

- norm-3.dat , m=18 , D=2

3- .

- expon.dat , m=0.8

.

-

.

4.

4. ⠠

, .

% , . 2-
1 9 %
2 9 %
3 9 %
4 9 %
5 9 %
6 9 %
7 9 %
8 9 %
9 9 %
10 9 %
.. 9 %

:

.. 0.1 10 % .

1. . 9

.. . .

2. .

3. . . ++.

4. .. GPSS.

5. .. . ++.

 

1

// 15. .

#include<stdio.h>

#include<conio.h>

const emb=1; //

main()

{ int tp=100; //

int tgz1=160; // 1-

int tgz2=170; // 2-

int tgz3=180; // 3-

int tm=8; //

int k=500; //

int t=0; //

char nz=0; //

char cikl=0; //

char pz1=0; // 1

char pz2=0; // 1

char pz3=0; // 1

char znw=0; //

char wz=0; //

char ocher[50]; //

char n=0; //

int w2=0; // . 2-

int ztgz1,ztgz2,ztgz3,ztm,zk; //.

printf(" "); scanf("%d",&tp);

printf(" 1- ");

scanf("%d",&tgz1); ztgz1=tgz1;

printf(" 2- ");

scanf("%d",&tgz2); ztgz2=tgz2;

printf(" 3- ");

scanf("%d",&tgz3); ztgz3=tgz3;

printf(" "); scanf("%d",&tm); ztm=tm;

printf(" ");

scanf("%d",&k); zk=k;

//----------- -----------------------------------

while (k!=0)

{ t=t+emb;

//

if (t%tp==0)

switch (cikl)

{ case 0: nz=1; cikl=1; break;

case 1: nz=2; cikl=2; break;

case 2: nz=3; cikl=3; break;

case 3: nz=1; cikl=0;

}

//

switch (nz)

{ case 1: pz1=1; nz=0; break;

case 2: pz2=1; nz=0; break;

case 3: pz3=1; nz=0;

}

1 ()

//

if (pz1==1)

if (tgz1==0) {pz1=0; znw=1; tgz1=ztgz1;} else tgz1=tgz1-emb;

if (pz2==1)

if (tgz2==0) {pz2=0; znw=2; tgz2=ztgz2;} else tgz2=tgz2-emb;

if (pz3==1)

if (tgz3==0) {pz3=0; znw=3; tgz3=ztgz3;} else tgz3=tgz3-emb;

//

if (n!=0 && wz==0) { wz=ocher[n-1]; n--; } //

// .

if (znw!=0) //

if (wz==0) { wz=znw; znw=0; } //

else // ,

{ if (n>=50) { printf("\n !\n"); return 0; }

else { ocher[n]=znw; znw=0; n++; }

}

//

switch (wz)

{ case 1: if (tm==0) {wz=0; k--; tm=ztm; } else tm=tm-emb; break;

case 2: if (tm==0) {wz=0; k--; w2++; tm=ztm; } else tm=tm-emb; break;

case 3: if (tm==0) {wz=0; k--; tm=ztm; } else tm=tm-emb;

}

}

printf("\n . , . 2- .=%d%",100*w2/zk);

}

2

//

#include<stdio.h>

long x=7533; //

long Rnd(long x) //

{ int l=5169;

long k=65536;

return (l*x)%k;

}

void main()

{ FILE *fout; //

int i; //

fout=fopen("vi_gpsc1.dat","w");

for(i=1; i<=1000; i++) fprintf(fout,"%f ",float((x=Rnd(x)))/65536);

fclose(fout);

}

3

uses crt;

var f1,f2,f3,f4:text;

i:integer;

x,z1,z2,y1,y2,a,y3,y4,y5,y6:real;

procedure norm1(var x1,x2:real);

begin

z1:=random;

z2:=random;

x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);

x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);

x1:=sqrt(2)*x1+16;

x2:=sqrt(2)*x2+16;

end;

procedure norm2(var x1,x2:real);

begin

z1:=random;

z2:=random;

x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);

x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);

x1:=sqrt(2)*x1+17;

x2:=sqrt(2)*x2+17;

end;

procedure norm3(var x1,x2:real);

begin

z1:=random;

z2:=random;

x1:=sqrt(-2*ln(z1))*cos(2*pi*z2);

x2:=sqrt(-2*ln(z1))*sin(2*pi*z2);

x1:=sqrt(2)*x1+18;

x2:=sqrt(2)*x2+18;

end;

procedure expon (a:real ; var x: real);

begin

z1:=random;

x:=-(1/a)*ln(z1);

x:=sqrt(1/sqr(a))*x+0.8;

end;

Begin

clrscr;

assign(f1,'d:\tp\norm-1.dat');

rewrite(f1);

assign(f3,'d:\tp\norm-2.dat');

rewrite(f3);

assign(f4,'d:\tp\norm-3.dat');

rewrite(f4);

writeln(' :');

for i:=1 to 500 do

begin

norm1(y1,y2); write(f1,y1,' ');write(f1,y2,' ');

norm2(y3,y4); write(f3,y3,' ');write(f3,y4,' ');

norm3(y5,y6); write(f4,y5,' ');write(f4,y6,' ');

3 ()

end;

close (f1); close (f3); close (f4);

assign(f2,'d:\tp\exp.dat');

rewrite(f2);

writeln(' ');

writeln(' a: '); readln(a);

for i:=1 to 500 do begin expon(a,x);write(f2,x,' '); end;

close(f2);

End.

4

//

#include<stdio.h>

#include<conio.h>

const emb=1; //

FILE *ravn, *norm1, *norm2, *norm3, *exp;

float a;

int ravnom()

{ fscanf(ravn,"%f ",&a);

return int(a*5);

}

int normal1()

{ fscanf(norm1,"%f ",&a);

return int(a*10);

}

int normal2()

{ fscanf(norm2,"%f ",&a);

return int(a*10);

}

int normal3()

{ fscanf(norm3,"%f ",&a);

return int(a*10);

}

int expon()

{ fscanf(exp,"%f ",&a);

return int(a*10);

}

//------------------------- ----------------------

main()

{ int tp=100; //

int tgz1=160; // 1-

int tgz2=170; // 2-

int tgz3=180; // 3-

int tm=8; //

int k=500; //

int t=0; //

char nz=0; //

char cikl=0; //

char pz1=0; // 1

char pz2=0; // 1

char pz3=0; // 1

char znw=0; //

char wz=0; //

char ocher[50]; //

char n=0; //

int w2=0; // . 2-

ravn=fopen("ravnomer.dat","r");

norm1=fopen("norm1.dat","r");

norm2=fopen("norm2.dat","r");

norm3=fopen("norm3.dat","r");

exp=fopen("exp.dat","r");

tgz1=normal1();

4 ()

tgz2=normal2();

tgz3=normal3();

tm=expon();

tp=10+ravnom();

//----------- -----------------------------------

while (k!=0)

{ t=t+emb;

//

if (t%tp==0)

{ tp=10+ravnom();

fscanf(ravn,"%f ",&a);

if (a<0.4) nz=1;

if (a>0.4 && a<0.5) nz=2;

if (a>0.5) nz=3;

}

//

switch (nz)

{ case 1: pz1=1; nz=0; break;

case 2: pz2=1; nz=0; break;

case 3: pz3=1; nz=0;

}

//

if (pz1==1)

if (tgz1==0) {pz1=0; znw=1; tgz1=normal1();} else tgz1=tgz1-emb;

if (pz2==1)

if (tgz2==0) {pz2=0; znw=2; tgz2=normal2();} else tgz2=tgz2-emb;

if (pz3==1)

if (tgz3==0) {pz3=0; znw=3; tgz3=normal3();} else tgz3=tgz3-emb;

//

if (n!=0 && wz==0) { wz=ocher[n-1]; n--; } //

// .

if (znw!=0) //

if (wz==0) { wz=znw; znw=0; } //

else // ,

{ if (n>=50) { printf("\n !\n"); return 0; }

else { ocher[n]=znw; znw=0; n++; }

}

//

switch (wz)

{ case 1: if (tm==0) {wz=0; k--; tm=expon(); } else tm=tm-emb; break;

case 2: if (tm==0) {wz=0; k--; w2++; tm=expon(); } else tm=tm-emb; break;

case 3: if (tm==0) {wz=0; k--; tm=expon(); } else tm=tm-emb;

}

}

printf("\n . , . 2- .=%d%",100*w2/500);

fclose(ravn);

fclose(norm1);

fclose(norm2);

fclose(norm3);

fclose(exp);

}

.. ------------------------------------------------------------------------------------------------

 

 

 

! , , , .
. , :