{$ifndef unix}
{$A+,B-,D+,E+,F-,G+,I+,L+,N+,O-,P+,Q-,R-,S+,T-,V-,X+,Y+}
{$else}
{$B-,I+,S+,T-,X+}
{$endif}
unit prandom;

interface

var
{$ifdef unix}
	pRandseed:word(32);
{$else}
	pRandseed:longint;
{$endif}

procedure prandomize;

function prandom(w:word):word;

implementation

procedure prandomize;
begin
	{$ifdef unix}
		randomize;
		prandseed:=random(256) shl 24 + random(256) shl 16
		+ random(256) shl 8 + random(256);
	{$else}
		randomize;
	{$endif}
end;

function prandom(w:word):word;
var
	l:longint;
begin
	pRandseed := 134775813*pRandseed + 1;
{$ifndef unix}	
	prandom:= (((pRandseed shr 16)*w + (((pRandseed and $ffff)*w) shr 16))
			 shr 16) and $ffff;
{$else}
	l:=pRandseed;
	prandom:= (l*w) shr 32;
{$endif}
end;

begin
 prandseed:=1;
end.