program gauss_jordan;
{$N+}
uses
crt;
function rnd: double;
const
bias = 1023;
var
data : record
b : byte;
d : double;
end;
x : array[0..8] of byte absolute data;
e, i, j : word;
begin
for i := 0 to 7 do
x[i] := lo(random(256));
e := bias;
repeat
j := 0;
for i := 0 to 7 do
begin
j := (x[i] shl 1) + hi(j);
x[i] := lo(j);
end;
e := e - 1;
if (bias - e) mod 8 = 0 then
x[0] := lo(random(256));
until (x[7] and $10) = $10;
x[7] := (x[7] and $0F) or lo(e shl 4);
x[8] := lo(e shr 4);
rnd := data.d;
end;
function gauss(a,d: double): double;
const
t : double = 0;
var
v1, v2, r : double;
begin
if t = 0 then
begin
repeat
v1 := 2 * rnd - 1;
v2 := 2 * rnd - 1;
r := v1 * v1 + v2 * v2
until r < 1;
r := sqrt((-2 * ln(r)) / r);
t := v2 * r;
gauss := a + v1 * r * d;
end
else
begin
gauss := a + t * d;
t := 0;
end;
end;
begin
clrscr;
writeln(' El Resultado Es');
writeln;
write(' ',gauss(4,4):0:10);
readln;
end.