unit randoms; interface procedure srand(s:integer);//Устанавливает зерно для ГПСЧ function rand:integer;//Возвращает случайное число function rnd(max:integer):integer;//Возвращает число от 0 до max function rnd_pr(pr,p1,p2:integer):integer; (* Возвращает true с вероятностью x/y *) function RandomBoolean(x, y : Integer) : Boolean; implementation var next:integer; function rand:integer; begin next:=next xor (next << 13); next:=next xor (next >>> 17); next:=next xor (next << 5); rand:=abs(next); end; procedure srand(s:integer); begin //Debug('srand('+s+')'); next:=s; end; function rnd(max:integer):integer; begin rnd:=rand mod max; end; function rnd_pr(pr,p1,p2:integer):integer; begin if pr>=rnd(101) then rnd_pr:=p1; else rnd_pr:=p2; end; function RandomBoolean(x, y : Integer) : Boolean; begin RandomBoolean := rnd(y) <= x; end; end.