Написать программу в паскаль abc, генератор чисел от 0 до 1 с 16 знаками после запятой(пример 0.0000000000000002) и записать эти данные в файл txt по возрастанию.
Как то так, можно улучшить конечно, но числа генерируются в нужном интервале, если найду что получше, то перепешу
var
a:array[1..1000] of real; i,x, j:integer; cur:real; l:text; label y;
begin assign(l, 'output.txt'); rewrite(l); randomize; for i:= 1 to 999 do begin y: cur := 0.96743612142/( random(24)+random(11)+random(7)); x:= random(100); if x > 20 then if cur < 0.4 then cur:= cur * random(5); if (cur = 0) or (cur > 1)then goto y; a[i]:=cur; end; for i:= 1 to 999 do for j:= 1 to 999 do if a[j] > a[i] then swap(a[j], a[i]); for i:= 1 to 999 do writeln(l, a[i]:0:16); close(l);
var
a:array[1..1000] of real;
i,x, j:integer;
cur:real;
l:text;
label y;
begin
assign(l, 'output.txt');
rewrite(l);
randomize;
for i:= 1 to 999 do
begin
y:
cur := 0.96743612142/( random(24)+random(11)+random(7));
x:= random(100);
if x > 20 then
if cur < 0.4 then cur:= cur * random(5);
if (cur = 0) or (cur > 1)then goto y;
a[i]:=cur;
end;
for i:= 1 to 999 do
for j:= 1 to 999 do
if a[j] > a[i] then swap(a[j], a[i]);
for i:= 1 to 999 do writeln(l, a[i]:0:16);
close(l);
end.
Улучшенная версия
var
a: array[1..1000] of real;
i, x, j: integer;
cur, tmp: real;
l: text;
label y, z;
begin
assign(l, 'output.txt');
rewrite(l);
randomize;
for i := 1 to 999 do
begin
y:
tmp := 1 - 1 / (random(33) + random(11) + random(7));
if tmp < 0.4 then goto y;
cur := tmp / abs(random(24) + random(11) - random(7));
if cur > 0.8 then
begin
x := random(10000);
if x < random(10000) then
begin
cur := cur / (1 - 1/(random(10) + random(11) + random(7))); end;
end;
x := random(100);
if x > 50 then
if cur < 0.5 then cur := cur * random(5);
if cur < 0.1 then
begin
x := random(10000);
if x < 7000 then
cur := cur * random(8);
end;
if cur > 0.8 then
cur:= cur - 1/(random(10) + random(11) + random(7)) - 1/(random(10) + random(11) + random(7)) + 1/(random(10) + random(11) + random(7)) + 1/(random(10) + random(11) + random(7));
if (cur = 0) or (cur > 1) then goto y;
a[i] := cur;
end;
for i := 1 to 999 do
for j := 1 to 999 do
if a[j] > a[i] then swap(a[j], a[i]);
for i := 1 to 999 do writeln(l, a[i]:0:16);
close(l);
end.