| Tent   
   Posts: 429
 
 | 
			| 
 
				Кто-нибудь когда-нибудь сталкивался с линейным конгруэнтным методом генерации псевдослучайных чисел?  
Есть задача, реализованная на паскале:
 
Code:
 Program _1;var
 a,c:integer; n,i,m,x,xo:longint;
 
 function f(x:longint):longint; {vichislenie znacheniya chlena posledovatelnosti}
 begin
 f:=(a*x+c) mod m;
 end;
 
 function item(N:longint):longint; {vichislenire poslednego chlena posledovatelnosti}
 begin
 x:=xo;
 for i:=1 to N do x:=f(x);
 item:=x;
 end;
 
 function Period(xx:longint):longint; {vischislenie perioda}
 var q:byte;
 begin
 q:=0;
 x:=xo;
 i:=0;
 repeat
 If x=xx then inc(q);
 x:=f(x);
 if q>0 then inc(i);
 until q=2;
 period:=i;
 end;
 
 Begin
 writeln('vvedite kol-vo elementov');
 readln(N);
 xo:=5;
 a:=4149;
 m:=131074;
 c:=27700;
 
 writeln('x[',N,']= ',item(n));
 writeln('It period is: ',period(item(n)));
 readln;
 End.
 
Требуется вычислить такие значения коэффициентов m,c,a, при которых период ГСПЧ будет наибольшим. Вернее, вычисленые-то они уже имеются, но это взято из интернетов, где ни глянь - везде пишут нечто вроде "данные значения коэффициентов вычислены различными исследователям и являются наиболее приемлемыми для генерации максимального периода". А мне надо доказать, что именно эти значения, а не другие. Соответственно, надо вычислить множество значений, визуализировать (построить график). Как - описывается во втором томе у Кнута, но для меня это крайне сложно и запутано. Может кто-нибудь сможет объяснить более доступно? Буду очень признателен
			 |  | 
	| 17.06.2011 16:18 |  |