uForum.uz

uForum.uz (https://uforum.uz/index.php)
-   Разминка для мозгов (https://uforum.uz/forumdisplay.php?f=470)
-   -   Лотерея (https://uforum.uz/showthread.php?t=9670)

Наташа 01.07.2009 01:29

Лотерея
 
Цитата:

Правила розыгрыша:
1 июля 2009 года с независимого от администрации форума новостного сайта ( www.cnews.ru ) из разделов «Телеком», «Интернет» «Софт» будут выбраны первые новости за этот день (после 00:00 часов 1 июля 2009 года).
Время выхода каждой новости служит основой для розыгрыша среди участников. Из склеенных всех последних 2-х цифр (минуты) будет получено 6-тизначное число: ABCDEF
где : AB - минуты выхода первой новости, CD - минуты выхода второй новости, EF- минуты выхода третьей новости.
Далее путем расчленения полученного числа на 6 чисел и деления их по модулю на количество участников (КУч), будет получено 3 номера победителей.
1 победитель (ABCD mod КУч) + 1 ABCDEF
2 победитель (BCDE mod КУч) + 1 ABCDEF
3 победитель (CDEF mod КУч) + 1 ABCDEF
Единица прибавляется для исключения выпадения нуля.
Например, если выход новостей был 10:07, 09:43, 11:12 - в трех разделах, а количество участников равно 110, то получится 6-ти значное число 074312. Победитель будет найден по формуле:
1 победитель (0743 mod 110) +1 = 307 074312
2 победитель (7431 mod 110) +1 = 003 074312
3 победитель (4312 mod 110) +1 = 380 074312
по чему такая лотерея была бы не честной?...:) -условимся, что время выхода новости действительно абсолютно случайно...:)

Nadir Zaitov 01.07.2009 12:54

Вложений: 1
Умница, Наташа!

Самый вредный вариант - по модулю 100 (200 и т.д.). Шансы выиграть имеют только 1-е 60 человек, а остальные шансов вообще не имеют :).

Действительно есть проблемы с наложением частотных характеристик и модулем - Нужно было формулу другую с умножением на 60, а не со скрытым умножением на 100 использовать!

В случае со 150 участниками файл даже вложил, чтоб поиграться и посмотреть можно было :). Для изменения в любом пустом месте таблицы нажмите F2 и затем ввод - диаграмка с частотными характеристиками пересчитается.

Evgeniy Sklyarevskiy 01.07.2009 14:01

В связи с повальной грамотностью на форуме предлагаю исправить название темы на правильное...

b_a_lamut 01.07.2009 15:53

Цитата:

Сообщение от Evgeniy Sklyarevskiy (Сообщение 237897)
В связи с повальной грамотностью на форуме предлагаю исправить название темы на правильное...

Оффтоп:
Эх, испортили праздник расчётами. Недаром я не доверяю математикам. Ты бы лучше похлопотал, чтобы меня в Real ID включили и впихнули в лоторею на счастливый, согласно расчётам, номер :)

Evgeniy Sklyarevskiy 01.07.2009 16:24

Оффтоп:
Цитата:

Сообщение от b_a_lamut (Сообщение 237963)
Ты бы лучше похлопотал, чтобы меня в Real ID

Люди годами в очереди стоят...

Наташа 01.07.2009 16:37

Оффтоп:
Цитата:

Сообщение от Evgeniy Sklyarevskiy (Сообщение 237897)
В связи с повальной грамотностью на форуме предлагаю исправить название темы на правильное...

устала я от грамотности на этом форуме -разрешите по писать с ошибками...:185:

Оффтоп:
Цитата:

Сообщение от b_a_lamut (Сообщение 237963)
Ты бы лучше похлопотал, чтобы меня в Real ID включили и впихнули в лоторею на счастливый, согласно расчётам, номер

а говорите -математикам не доверяете...:)

Nadir Zaitov 01.07.2009 17:41

Цитата:

Сообщение от Evgeniy Sklyarevskiy (Сообщение 237897)
В связи с повальной грамотностью на форуме предлагаю исправить название темы на правильное...

[mod]Рекомендую в подобных случаях использовать либо тег [help] ("!"), если нужно исправить очепятку, либо тег оффтоп, если это было "приколом". Очипятку исправил.[/mod]

b_a_lamut 01.07.2009 17:58

Цитата:

Сообщение от Наташа (Сообщение 237987)
а говорите -математикам не доверяете...

Оффтоп:
Я только Евгению Семёновичу доверяю, как математику. У Него всё схваченно и арихметика своя. Да, на всякий случай, не показывайте Ему язык. Он сделает вид, что не заметил, но запомнит. Вот, меня в очередь поставил, несмотря на то, что я везде его поддерживаю и палки в колёса вставляю, при случае.


Лучше задачи решать. Какие будут предложения по создавшейся ситуации с лотереей. Что можно сделать, чтобы призы остались у счастливчиков, а выпавшие из игры, в неё попали без обид и с чувством удовлетворения.

Наташа 01.07.2009 18:35

Цитата:

Сообщение от b_a_lamut (Сообщение 238067)
Какие будут предложения по создавшейся ситуации с лотереей.

Цитата:

1 победитель (ABCD mod КУч) + 1 ABCDEF
2 победитель (BCDE mod КУч) + 1 ABCDEF
3 победитель (CDEF mod КУч) + 1 ABCDEF
если банально лень, что то серьезное придумывать, то можно ограничиться как предложенно:
Цитата:

Сообщение от Nadir Zaitov (Сообщение 237843)
Действительно есть проблемы с наложением частотных характеристик и модулем - Нужно было формулу другую с умножением на 60, а не со скрытым умножением на 100 использовать!

изящным:
1 победитель ((AB+60*CD) mod КУч) + 1 ABCDEF
2 победитель ((BC+60*DE) mod КУч) + 1 ABCDEF
3 победитель ((CD+60*EF) mod КУч) + 1 ABCDEF

а еще лучше красочным:
1 победитель ((AB+60*CD+60*60*EF) mod КУч) + 1
2 победитель ((CD+60*EF+60*60*AB) mod КУч) + 1
3 победитель ((EF+60*AB+60*60*CD) mod КУч) + 1
:)
конечно маленькая разница останется но она будет в пределах долей процента...:) и этот замысловатый алгоритм станет куда как стабильнее...:)

Nadir Zaitov 01.07.2009 18:54

Цитата:

Сообщение от Наташа (Сообщение 238079)
конечно маленькая разница останется но она будет в пределах долей процента...

Это из-за того, что число не будет делится на КУч без остатка?

Nadir Zaitov 01.07.2009 18:59

Цитата:

Сообщение от Наташа (Сообщение 238079)
если банально лень, что то придумывать, то можно например заменить изящным:
1 победитель ((AB+60*CD) mod КУч) + 1 ABCDEF
2 победитель ((BC+60*DE) mod КУч) + 1 ABCDEF
3 победитель ((CD+60*EF) mod КУч) + 1 ABCDEF

а еще лучше красочным:
1 победитель ((AB+60*CD+60*60*EF) mod КУч) + 1
2 победитель ((CD+60*EF+60*60*AB) mod КУч) + 1
3 победитель ((EF+60*AB+60*60*CD) mod КУч) + 1

конечно маленькая разница останется но она будет в пределах долей процента...

А вообще лучше было не мучаться, а брать от строк ABCDEF, CDEFAB, EFABCD hash-образ, который потом и брать по модулю КУч.

shumbola 01.07.2009 19:18

Цитата:

Сообщение от Nadir Zaitov (Сообщение 238092)
Цитата:

Сообщение от Наташа (Сообщение 238079)
если банально лень, что то придумывать, то можно например заменить изящным:
1 победитель ((AB+60*CD) mod КУч) + 1 ABCDEF
2 победитель ((BC+60*DE) mod КУч) + 1 ABCDEF
3 победитель ((CD+60*EF) mod КУч) + 1 ABCDEF

а еще лучше красочным:
1 победитель ((AB+60*CD+60*60*EF) mod КУч) + 1
2 победитель ((CD+60*EF+60*60*AB) mod КУч) + 1
3 победитель ((EF+60*AB+60*60*CD) mod КУч) + 1

конечно маленькая разница останется но она будет в пределах долей процента...

А вообще лучше было не мучаться, а брать от строк ABCDEF, CDEFAB, EFABCD hash-образ, который потом и брать по модулю КУч.

Еще лучше было бы попросить random.org сгенерировать 3 случайных числа в пределах 1 - КУч. :-)

Evgeniy Sklyarevskiy 01.07.2009 19:23

Цитата:

Сообщение от Nadir Zaitov (Сообщение 237843)
Самый вредный вариант - по модулю 100 (200 и т.д.). Шансы выиграть имеют только 1-е 60 человек, а остальные шансов вообще не имеют .

Действительно есть проблемы с наложением частотных характеристик и модулем - Нужно было формулу другую с умножением на 60, а не со скрытым умножением на 100 использовать!

Поясните, пожалуйста, я так и не понял, в чем неравноправие шансов???

Nadir Zaitov 01.07.2009 19:41

Цитата:

Сообщение от shumbola (Сообщение 238107)
random.org

Правильность (непредвзятость организаторов) не проверить :)
Оффтоп:
Не будьте компьютером - будьте человеком :)

Nadir Zaitov 01.07.2009 19:59

Цитата:

Сообщение от Evgeniy Sklyarevskiy (Сообщение 238111)
Поясните, пожалуйста, я так и не понял, в чем неравноправие шансов???

Файл для случая Вы скачали? Без детального анализа я тоже сразу не смекнул.

Теперь к пояснению. Формула у нас такая:

f(x,y)=(([x*60]*100+[y*60]) mod КУч) +1, где:

КУч - константа заранееизвестная;
[] - операция выделения целой части;
x,y - некоторые "случайные" числа из отрезка (0,1);

Возьмем КУч=100, например, для наглядности.

Тогда f(x,y)=[y*60] +1, для любых x и y, т.е. из 100 участников розыгрыш фактически идет среди первых 60, а остальные 40 никогда не получат призы!

Возьмем КУч=150, с этим сложнее.

Предположим, что [x*60] делится на 3 без остатка:
Тогда f(x,y)=[y*60] +1, для любых x и y, т.е. из 150 участников розыгрыш фактически идет среди первых 60, а остальные 90 не получат призы;

Предположим, что [x*60] делится на 3 с остатком 1:
Тогда f(x,y)=(100+[y*60]) mod 150 +1, для любых x и y, т.е. из 150 участников розыгрыш фактически идет среди 50 последних и 10 первых участников, а остальные 90 не получат призы;

Предположим, что [x*60] делится на 3 с остатком 2:
Тогда f(x,y)=(50+[y*60]) mod 150 +1, для любых x и y, т.е. из 150 участников розыгрыш фактически идет среди участников с номерами [50..110], а остальные 90 не получат призы;

Накладываем события, и видим, что участники [1..10]; [50..60]; [100-110] в два раза чаще имеют шансы выиграть, чем все остальные участники.

shumbola 01.07.2009 20:05

Цитата:

Сообщение от Nadir Zaitov (Сообщение 238119)
Правильность (непредвзятость организаторов) не проверить

На то они и организаторы. :-)

Nadir Zaitov 01.07.2009 20:06

Цитата:

Сообщение от Nadir Zaitov (Сообщение 238126)
f(x,y)=(([x*60]*100+[y*60]) mod КУч) +1

Это именно то, где "собака порылась", функция перед операцией mod не равномерная, а скачкообразная (с 59 идет скачек на 100 сразу). Следовательно mod не равномерно выдает остаток от деления на КУч, следовательно есть неравноправие участников лотереи. Легче всего неявное умножение на 100 заменить на явное умножение на 60, как и предложила Наташа.

Nadir Zaitov 01.07.2009 20:08

Цитата:

Сообщение от shumbola (Сообщение 238131)
На то они и организаторы. :-)

В предложенном ими (и уточненном нами) варианте - это проверяемо :), т.е. без мухлежа.

Ruslan Juldashev 01.07.2009 20:17

Оффтоп:
Ну так что мне с Олегом Паком нужно сделать, чтоб наконец отхватить долгожданный и заслуженный приз?

Ruslan Aliev 01.07.2009 20:29

Цитата:

Сообщение от Nadir Zaitov (Сообщение 237843)
Умница, Наташа!

Самый вредный вариант - по модулю 100 (200 и т.д.). Шансы выиграть имеют только 1-е 60 человек, а остальные шансов вообще не имеют :).

Действительно есть проблемы с наложением частотных характеристик и модулем - Нужно было формулу другую с умножением на 60, а не со скрытым умножением на 100 использовать!

В случае со 150 участниками файл даже вложил, чтоб поиграться и посмотреть можно было :). Для изменения в любом пустом месте таблицы нажмите F2 и затем ввод - диаграмка с частотными характеристиками пересчитается.

1 - в прикреплённом вами файле учитываются только два числа, хотя в приведённом примере учитываются три.
2 - Вы забыли про сдвиг при каждом делении
Цитата:

1 победитель (0743 mod 110) +1 = 307 074312
2 победитель (7431 mod 110) +1 = 003 074312
3 победитель (4312 mod 110) +1 = 380 074312
3 - Делится полученное 6-ти значное число не на 100 а на количество участников, так что заменить его на 60 проблематично.

Evgeniy Sklyarevskiy 01.07.2009 21:15

Цитата:

Сообщение от Nadir Zaitov (Сообщение 238126)
Цитата:

Сообщение от Evgeniy Sklyarevskiy (Сообщение 238111)
Поясните, пожалуйста, я так и не понял, в чем неравноправие шансов???

Файл для случая Вы скачали? Без детального анализа я тоже сразу не смекнул.

Теперь к пояснению. Формула у нас такая:.

Ааа я что-то начинаю понимать... Спасибо большое!

shumbola 01.07.2009 21:17

Оффтоп:

Цитата:

Сообщение от Ruslan Juldashev (Сообщение 238138)
Оффтоп:
Ну так что мне с Олегом Паком нужно сделать, чтоб наконец отхватить долгожданный и заслуженный приз?

Вместе вам раскошелиться на нужный номер. ;-)

b_a_lamut 01.07.2009 21:49

Как человек не участвующий в розыгрыше, не имеющий корыстных мотивов и побуждений, не коррумпированный и не запуганный интернетной мафией, могу, по мере необходимости, вытаскивать из шапки номера игроков.:shok:

Наташа 01.07.2009 22:23

Цитата:

Сообщение от Nadir Zaitov (Сообщение 238090)
Это из-за того, что число не будет делится на КУч без остатка?

думаю, что да..:)
Цитата:

Сообщение от Evgeniy Sklyarevskiy (Сообщение 238168)
Ааа я что-то начинаю понимать...

иными словами если например 100 человек то чтобы выиграл например счастливчик под затейливым номером 85 -нужно что бы у нас выпало число 0085, 0185, 0285,...3485... а таких чисел то и нету...:) поскольку последнее число ток до 60...:)

Efim Kushnir 01.07.2009 22:41

Цитата:

Сообщение от Ruslan Juldashev (Сообщение 238138)
Оффтоп:
Ну так что мне с Олегом Паком нужно сделать, чтоб наконец отхватить долгожданный и заслуженный приз?

Оффтоп:
А что ты готов сделать с Олегом Паком за приз?

Nadir Zaitov 01.07.2009 23:10

Цитата:

Сообщение от Rustam Valiev (Сообщение 238146)
1 - в прикреплённом вами файле учитываются только два числа, хотя в приведённом примере учитываются три.
2 - Вы забыли про сдвиг при каждом делении
Цитата:

1 победитель (0743 mod 110) +1 = 307 074312
2 победитель (7431 mod 110) +1 = 003 074312
3 победитель (4312 mod 110) +1 = 380 074312

- это не важно, просто 3 раза повторяется один и тот-же "несправедливый" процесс.
Цитата:

Сообщение от Rustam Valiev (Сообщение 238146)
3 - Делится полученное 6-ти значное число не на 100 а на количество участников, так что заменить его на 60 проблематично.

Так вот о том и идет рачь. Если б количество участников было бы 100, то из них на самом деле участвовало бы в розыгрыше только 60, а было бы 150 (у нас их в этом месяце 151), то у некоторых участников шансов выиграть было бы в 2 раза больше. В случае 151 разброс не такой большой. Процентов 20 наверное. Не проверял.

Nadir Zaitov 01.07.2009 23:46

Вложений: 1
Цитата:

Сообщение от Nadir Zaitov (Сообщение 238206)
Процентов 20 наверное. Не проверял.

Проверил. 30% ровно.
Вот файл для точного расчета для различных значений количества участников (в интервале до 200). 100 и 200 дадут ошибку, так как некоторые участники вообще остаются с носом и разница между их вероятностями "небо и земля" :) Забыл - диаграмка появляется, если поля скрытые раскрыть :)

Ruslan Aliev 02.07.2009 07:32

Цитата:

Сообщение от Nadir Zaitov (Сообщение 238206)
Цитата:

Сообщение от Rustam Valiev (Сообщение 238146)
1 - в прикреплённом вами файле учитываются только два числа, хотя в приведённом примере учитываются три.
2 - Вы забыли про сдвиг при каждом делении
Цитата:

1 победитель (0743 mod 110) +1 = 307 074312
2 победитель (7431 mod 110) +1 = 003 074312
3 победитель (4312 mod 110) +1 = 380 074312

- это не важно, просто 3 раза повторяется один и тот-же "несправедливый" процесс.

Дело в том что двузначное число получаемое из минут не может быть больше 60. А при сдвиге число может достигать 96. Я не буду сейчас сильно спорить так как еще не проанализировал ваш файл. Как на работу приду посижу над ним.

Ruslan Aliev 02.07.2009 07:52

Вложений: 1
На скорую руку подправил файл. Все равно выходит не справедливо, даже более выделенно.
Файл с расчетами прикрепляю.

Nadir Zaitov 02.07.2009 13:28

Цитата:

Сообщение от Rustam Valiev (Сообщение 238253)
Все равно выходит не справедливо, даже более выделенно.

Несправедливости ровно в 3 раза больше, что и ожидалось, если единичную несправедливость продублировать 3 раза.

Eldar Fattakhov 02.07.2009 14:10

Оффтоп:
Цитата:

Сообщение от Nadir Zaitov (Сообщение 238392)
ровно в 3 раза больше

Фраза (в первоисточнике) - достойный кандидат для различных рубрик uForum. :)

Nadir Zaitov 02.07.2009 14:16

Оффтоп:
Цитата:

Сообщение от Eldar Fattakhov (Сообщение 238403)
Фраза (в первоисточнике) - достойный кандидат для различных рубрик uForum.

Это как? Логическая ошибка?


Текущее время: 03:48. Часовой пояс GMT +5.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
OOO «Единый интегратор UZINFOCOM»