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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
TarasBer
сообщение 12.04.2010 15:33
Сообщение #2


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


> Я про компьютерный рандом ничего не знаю и знать не хочу.

Но пользуешься им. То есть ты пользуешься чем-то, про устройство чего ничего не желаешь знать, просто внушая себе его надёжность? Это плохо.

> Меня "сферические кони в вакууме" как-то мало интересуют.

А это не сферический, это тот, который используется в программе.

> Где вероятность того, что рандом будет постоянно возвращать одно и то же число (если только он не вырожден как Random(1)) ? Чему она равна?

Это я задал вопрос. Где гарантия того, что так не будет?

> Никогда за почти 2 десятка лет Random не вел себя иначе чем так, как он него требовалось.

Да? Рандом имеет свойство зацикливаться. Какой цикл у паскалевского рандома?

> это проверялось мной лично неоднократно на выборках любого размера - от минимального до огромного

С этого и надо начинать. Что "мой опыт говорит о том, что данный закон выполняется, гарантировать ничего не могу, но количество наблюдений говорит о том, что вероятность неприятностей минимальна".

> Это твои личные фантазии.P.S. Ну, а ты можешь с чистой совестью прекратить заниматься программированием...

Остынь.

Добавлено через 19 мин.
http://ru.wikipedia.org/wiki/Линейный_конгруэнтный_метод

Цитата

При этом длина периода равна m тогда и только тогда, когда:
НОД (c, m) = 1 (то есть c и m взаимно просты);
a - 1 кратно p для всех простых делителей p числа m;
a - 1 кратно 4, если m кратно 4.



Borland Delphi, Virtual Pascal m=232 a=134775813 c=1

Условие на НОД выполнено
условия 2 и 3 тоже

Да, RandSeed действительно пробегает все значения от 0 до 2^32-1.
В данном случае это гарантирует отсутствие бесконечного ожидания.
Хорошо, приношу свои извинения. Но без анализа что-то утверждать - голословно.

Добавлено через 1 мин.
m=2^32, а не 232, разметка не скопировалась.


--------------------
 Оффлайн  Профиль  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 11:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"