IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> random(49) +1, не понятное +1
Студент*21в.
сообщение 9.04.2010 8:44
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 37
Пол: Мужской
Реальное имя: Александр

Репутация: -  0  +


Добрый 21 век! smile.gif

program sportlotto;

type num=1..49;
var i:1..6;loto:num;

begin randomize;
for i:=1to 6do
begin
loto:=random(49)+1;
writeln('Nr.',i:2,loto:6)
end
end.

В общем эта программа имеет недостаток в том, что не все числа могут выпасть разными. Но не это мне важно!
Мне важно узнать о функции "random". Мне не понятно почему "+1"? Для чего "+1"?
P.S. Программа из университетского учебника.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 10.04.2010 7:13
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Мне тоже очень нравится пример из DRKB, который Sheka привел, очень элегантно. Уже который раз его вижу, и всякий раз восторгаюсь )). Я обычно не вспоминаю его в нужный момент и делаю, как в примере volvo. Но вот сейчас вставил счетчик внутрь repeat, и вышло, что полное количество повторений колеблется примерно от одной тысячи до двух (при диапазоне 256). Конечно, это не значит, что метод DRKB в 6 раз эффективнее (1500/250), ибо в нем используются сдвиги, которые, конечно, значительно медленнее, чем операции с множествами, но все равно здорово )). Особенно, если учесть, что вся процедура производится в начале, а потом лишь чтение значений. Тут тоже есть капля дегтя: памяти идет больше (на данные - в 8 раз)..

Оба метода применимы только для чисел, не превосходящих 255 (и DRKB начинается с 1). Для расширения метода DRKB на больший диапазон нужно реализовать вставление элементов в массив (что несложно), а второй метод потребует практически полной реализации множеств (что, на мой взгляд, сложнее). И еще - на большем диапазоне эффективность второго метода еще упадет (количество повторений увеличится непропорционально). Интересно было бы сравнить, однако.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Студент*21в.   random(49) +1   9.04.2010 8:44
TarasBer   Потому что рандом(н) даёт число от 0 до н-1   9.04.2010 9:13
Студент*21в.   Потому что рандом(н) даёт число от 0 до н-1 Спас...   10.04.2010 9:26
sheka   А мне очень нравится пример из DRKB. Правда он зде...   10.04.2010 0:37
Lapp   Да, и еще один важный момент (кстати, в тему)).. ...   10.04.2010 10:22
volvo   По мне - так вот это проще будет: var s: set of ...   10.04.2010 1:16
Студент*21в.   По мне - так вот это проще будет: [code=pas]var ...   10.04.2010 11:38
Lapp   Мне тоже очень нравится пример из DRKB, который Sh...   10.04.2010 7:13
Lapp   на большем диапазоне эффективность второго метода ...   10.04.2010 10:49
sheka   Я так тоже делал, пока не нашел Реализацию через ...   10.04.2010 11:29
sheka   Ого, как намудрили)   10.04.2010 11:40
TarasBer   Дык это ж потенциально бесконечный алгоритм. Кто...   12.04.2010 9:50
Archon   Для твоего примера это может выглядеть так: [cod...   12.04.2010 9:54
volvo   Не надо вырывать строки из программы. Там было нап...   12.04.2010 13:15
TarasBer   > Где потенциальная бесконечность? Где гаранти...   12.04.2010 13:28
Client   Сори что вмешиваюсь, НО... TarasBer, а что ты не п...   12.04.2010 14:31
TarasBer   > TarasBer, а что ты не привел код, которому до...   12.04.2010 15:01
volvo   Я про компьютерный рандом ничего не знаю и знать н...   12.04.2010 15:15
TarasBer   > Я про компьютерный рандом ничего не знаю и зн...   12.04.2010 15:33


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 10:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"