Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Файлы

Автор: eugenek 21.08.2005 17:52

сформировать типизированный файл целых чисел, получаемых с помощью датчика случайных чисел.

Автор: volvo 21.08.2005 19:10

Поиск используй, это уже было...

Автор: eugenek 21.08.2005 19:48

Так правильно?

      
Program Lab_46;
Uses Crt;
Var
f: file of integer; {файл целого типа}
r :integer; {количество чисел вносимых в файл}
l :integer; {нижний диапазон}
h :integer; {верхний диапазон}
i,j : integer;
begin
clrscr;
readln®;
readln(l);
readln(h);
assign(f, 'f_int.plb');
rewrite(f);
randomize;
for i:=1 to r do begin
j:=(random(h-l))+l;
write(f,j);
end;


close(f);



end.


Автор: klem4 24.08.2005 21:11

Похоже на правду smile.gif только мне кажется, чтобы получить случайное число в интервале от left до right надо делать вот так :

rnd := left + random(right-left) + 1;


а у тебя полчается рандомное число от 0 до Right-left насколько я понимаю.

Автор: volvo 24.08.2005 22:22

Цитата(klem4 @ 24.08.05 17:11)
мне кажется, чтобы получить случайное число в интервале от left до right надо делать вот так :
rnd := left + random(right-left) + 1;

Не совсем... Надо делать вот так:
rnd := left + random(right-left+1);
Посмотри например, как делать число в интервале 2 .. 9 ? Нужно
Цитата
2 + Random(8)
, а не
Цитата
2 + Random(7) + 1
... При твоем способе получится число из интервала (left+1) .. right, число left ты уже не получишь...
Цитата(klem4 @ 24.08.05 17:11)
а у тебя полчается рандомное число от 0 до Right-left насколько я понимаю.
:no:
Получался интервал left .. (right-1)

Автор: klem4 24.08.2005 22:26

Прошу прощения, я не смог отличить букву l от единички smile.gif))))) , у автора ведь тоже самое написано, только у меня еще + 1

значит надо вот так :

rnd := left + random(right-left+1);

Автор: eugenek 24.08.2005 23:46

Цитата(volvo @ 24.08.05 18:22)
Не совсем... Надо делать вот так:
rnd := left + random(right-left+1);



Действительно..., спасибо, учту.