1. Заголовок или название темы должно быть информативным ! 2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК ! 4.НЕ используйте форум для личного общения! 5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
begin randomize; for i:=1to 6do begin loto:=random(49)+1; writeln('Nr.',i:2,loto:6) end end.
В общем эта программа имеет недостаток в том, что не все числа могут выпасть разными. Но не это мне важно! Мне важно узнать о функции "random". Мне не понятно почему "+1"? Для чего "+1"? P.S. Программа из университетского учебника.
это ж потенциально бесконечный алгоритм. Кто его знает, как рандом себя поведёт.
Не надо вырывать строки из программы. Там было написано вот это:
for i := 1 to 6 do { <--- Цикл для 6-ти значений !!! } begin repeat X := random(49) + 1; until not (X in s);
. Где потенциальная бесконечность? Чуть дольше будет работать - это возможно. Но бесконечно - не будет этого никогда. Если б я написал for i := 1 to 50 do - вот тогда было бы бесконечно.
Цитата
не знаю, стоит ли доверять таким вещам.
Равно как и любым другим вещам. Не нравится - не пользуйся. Мне нравится - я пользуюсь. Ни разу бесконечный цикл не наблюдал от этой конструкции. Если бы стояла задача написать супер-оптимизированную программу под жесткий RealTime, естественно, писАлось бы по-другому. Но для учебной программы - почему нет? Причем я сразу написал:
Цитата
По мне - так вот это проще будет
, никому ничего не навязывал и не собираюсь. У каждого своя голова на плечах.