Pull to refresh

Comments 60

Поучительно. Сразу такое и не предусмотришь…
Надо сразу согласовывать выигрышные коды и в каком порядке они формируются. Странно что заказчик доверил вам выбор выигрышных кодов, если по ним можно было получить реальные призы.
Хаб «тестирование». Как? =)
Тестирование в реальном мире? Ходить проверять билеты по кинотеатрам?
Интересно подумать про автоматическое тестирование здесь.
Тестировщики тоже иногда забывают о реальности. Да и проблема как раз в том, что тесты показали что всё работает
Странно, а тесты не показали, что все работает хорошо только для первых 500 человек? При чем, очень так хорошо работает. И странно что никто не подумал о всех тех тысячах, что купят остальные билеты.
В общем статья скорее не о реальном мире, а об отсутствии аналитического склада ума.
Тесты не смогли показать, что именно первые 500 напечатанных билетов пойдут в кино первыми
Все таки, _случайные_ выйгрышные билеты, надо было брать в _случайном_ порядке, по моему, это было очевидно.
Ну в данном случае ТЗ было выполнено в точности. Косяк заказчика, который пришлось закрывать на ходу. Это скорее правило, чем исключение.
Маленькая мораль: «любые» лучше трактовать как «случайные».
Мораль: если взять «случайные» билеты, не будем зависить от распределения билетов в реальном мире.
Непонятно зачем тут «счастливые коды», если достаточно было бы просто рандомно считать шанс выигрыша при вводе очередного кода на сайте. Разве что складировать уже «использованные» коды пришлось бы, дабы избежать ситуаций когда какая-нибудь хитрая ж… введёт свой код раз 5 подряд.

Ну т.е. победители просто выбирались бы на самом серваке с шансом в те самые 0.0005 до тех пор пока их меньше 500.
Можно было бы ещё и скоростью выигрывания рулить напрямую.
Билеты должны были разыгрываться только среди тех, кто действительно купил билет, причём максимальному количеству разных людей. С % вероятности было бы всё печальнее — судя по логам, толпы «самых хитрых» пытаются вводить случайные коды
UFO just landed and posted this here
Да просто контрольную сумму в конец добавить.
Тогда розыгрышь будет не среди тех у кого есть билет, а среди тех кто ввёл код билета на сайте.
1. У нас есть 1 миллион билетов и их коды, которые вроде бы нельзя подобрать.
2. Когда кто-то вводит код с билета, мы проверяем, есть ли он в базе данных, если нет — пишем, что неверный код.
3. Если есть и билет уже вводили, то пишем, что его использовали.
4. Иначе считаем вероятности и отмечаем в базе билет как выигрышный или как проигравший.
5. REAL PROFIT!!!

Примечание: не обязательно в базе хранить весь миллион, можно их по какому-то алгоритму генерировать (вряд ли кто-то узнает алгоритм, мы ведь управляем вероятностями).
UFO just landed and posted this here
Дело в том что желающих зайти на сайт и попытать удачу скорее больше чем 0.5 процентов, вот только рассеяны они в случайном порядке по кодам своих билетов.
И вот если и выигрышные билеты были бы рассеяны в случайном порядке, а не скопились на первых 500. То и победителей было бы больше.
UFO just landed and posted this here
Если бы выигрышные билеты были бы рассеяны в случайном порядке, то те 2 победителя (примерно) тоже «рассеялись» бы случайно во времени проведения лотереи.
Почему их больше то станет? Чтобы стало больше, надо делать выигрышных билетов больше.
Сабвей и крепкий орешек?

Я бы делал не заранее известные номера, а выдавал бы выигрыш рандомно зареганным кодам на сайте, так как высока вероятность что 50% тупо не будут никуда ничего вводить, а так — кто ввел, тот, возможно, выиграл. Тогда со 100% вероятностью ваши 500 билетов уйдут счастливчикам.

А такие вещи, конечно, можно и нужно предусматривать. Фейл.
Мне кажется, есть разница между билетом в руках с желанием проверить его «счастливость» и сомнительным шансом, что тебя чудом выберет рандом, да еще и вводить что-то для этого. То ли с горы, то ли в гору. Мотивация в первом варианте работает лучше, ибо ее нужно меньше.
Тут или я параноик, или у маркетологов тонкое чувство влияния на потребителя.
Хотя, если акцию поставить по первому варианту и по-тихому рандомить на сайте, то вариант хороший. Но, опять же, неблагородный.
блин, все взрослые люди, а верят в еще какие-то лотереи…

сам работал в компании, которая разработала сайт prize.ru и наш Ген иностранный директор поросил, сделать так, чтоб ему достался разыгрываемый от партнеров ноутбук…
хм, но все было сделано так, что систему не подтасуешь… хотя я не помню, кому тогда он достался. Это было более 5 лет назад.
Когда учился я классе в 10, купил бюджетные наушники, и там была акция какая-то. Нужно было позвонить и зарегистрировать код. Я на тот момент никогда в таких вещах участия принимал, и толи от интереса, толи от скуки позвонил, зарегистрировал код и благополучно про лотерею забыл.

Через пол года пришло извещение о почтовой доставке на мое имя. Я сильно удивился тогда, сходил на почту, забрал бандероль. В ней лежал плеер (cd + mp3, для меня тогда он был очень крутым девайсом), в комплекте с которым, кстати, лежали наушники, причем гораздо лучше купленных мной тогда. Мне понадобилось некоторое время, чтобы понять откуда он вообще взялся :) Так что бывает, что иногда и везет.
Один ноутбук и один плеер забрал директор, а что делать с остальными 99 плеерами? Уж так и быть, раздать «победителям».
Работал на французскую компанию где была лотерея. Ничего никто не подтасовывал.
Прикольно, что многие считают, что выиграть в такие лотереи вообще невозможно, а здесь даже решили подтасовывать, чтоб хоть кто-то выиграл.
Как раз именно потому, что ни кто не мог выиграть! Так что многие считают верно ;)
Слышал я о тонкостях проведения лотерей, правда для случая с билетами. Когда отправляешь билеты в печать, ты не можешь выбрать, какие из них будут выигрышными, таков закон. Но ты можешь выпускать несколько тиражей и имеешь право все выигрышные билеты заказать в последнем тираже. Таким образом, чтобы никто не выиграл (вообще), последний тираж просто «сбрасывают в реку».
Это из разряда страшилок про «чёрную руку» и как казино убивают игрока, сорвавшего джек-пот.

В реальности все призы заложены в стоимости продукта да и вообще составляют копейки от общего бюджета1. Поэтому компании гораздо выгоднее прокрутить в эфире улыбку счастливого победителя и получить дополнительную рекламу чез заниматься подобными глупостями.
Что данная история и подтверждает: компания беспокоится что НИКТО НЕ ВЫИГРАЛ и подтасовывает результаты, что-бы выиграл хоть кто-то.
Ситуации бывают разные. Случай, мной описанный, — реальный. И я видел, как это делается.

В данной ситуации, в отличе от описанной в топике, цель лотереи — срубить побольше денег на продаже самих билетов. Ибо билет стоит 10 рублей, а призы — автомобиль, квартира, путёвка и прочее. И далеко не все билеты будут проданы, так что покрытие расходов на призы может вообще быть неполным.
> те самые “первые попавшиеся, неважно какие” 500 кодов, которые мы взяли из 500 первых строк файла

Заказчик вместо «случайные» сказал «первые попавшиеся», исполнители не догадались, что на самом деле требуется заказчику. Вспоминается целый класс анекдотов про жену и мужа:)
Дада, мы увидели 1000000 случайных строк, и не увидели никакой разницы между случайно выбранными строками, и последовательными. Чем 100500я строка вида «jhsbnfcjas» лучше 500й «lkvmnjldmf»? -подумал я.
«взять первые попавшиеся 500» я, как и вы, понял как «первые 500» и потому читая текст сделал вот так: о.О
то, что произошло у вас, можно даже назвать неким «недоразумением»…

У нас 2 раза были более тяжелые случаи, с моральной точки зрения. Когда заказчики (крупные, всем известные бренды) ближе к концу мероприятия указывали, какой конкретно номер должен попасть в выигрышные или какой конкретный человек должен обязательно занять первое место. Это очень подорвало мою веру в подобные промо-мероприятия. Это самое главное «ограничение» реального мира…
Не томите, огласите эти компании публике. Страна должна знать своих героев.
Не понял какая разница как были распределены билеты?

На количество победителей влияет только число призовых билетов, а не их распределение.
Изменение их распределения повлияет только на распределение победителей, но их останется столько же. Конечно это при допущении, что в первом кинотеатре % желающих проверить код на сайте такой же как и в других.
UFO just landed and posted this here
Походу, в конце акции фильмы уже прошли в кинотеатрах.
Кстати да, а ведь правда же! Им бы и пришло 2 билета только, правда не в первый день а в случайные 2 дня. Сама система неполноценна — нужно было сделать так, как советуют выше — определять победителя в момент ввода кода.
Мне с первых строчек пришло в голову: «надеюсь, они не взяли действительно ПЕРВЫЕ 500 кодов?» :)
Так я и не понял, они их взяли или нет? :)
Интересно. Всего билетов 1 000 000, из них 500 выигрышных => вероятность выиграть для одного билета = 0,0005
Если у вас из 500 человек только 2 ввели коды, то из миллиона введут коды только 4000
4000 * 0,0005 = 2 выигрыша

Что и получилось :) Причем не важно, последовательно шли номера или нет, на вероятность это не влияет.

UPD выше такое же мнение
Конечно, так и будет. Процент ведь не меняется.
Тут речь о другом:
1. Приток победителей должен быть более равномерный, чем только один сеанс кино (вывод: надо брать коды из всех сеансов, а не только с первого).
2. Заказчик не рассчитывал что вводить коды будет такое малое количество людей (вывод: надо увеличить процент).
По-хорошему, нужно было определять победителей уже после сеансов, когда уже точно известно, сколько человек вообще вводили эти коды. Теперь я понял, почему всякие розыгрыши призов именно так и работают — введи код, а победителя определим через месяц.
… сказали взять первые попавшиеся 500 и использовать их в качестве выигрышных...

Ну ведь здесь уже становится понятной причина фейла!)
Если необходимо раздать все 500 призовых билетов в какой-то актуальный срок, когда не известно сколько вообще людей будут участвовать в лотерее, то можно действовать так:
— берем промежуток времени, за который планируется раздать 500 билетов (для простого примера 100 часов),
— делим его на маленькие промежутки (для простого примера 1 час),
— в час у нас должны выйграть 5 билетов, раздаем их первым 5 счастливчикам (проверяя наличие кода в базе и помечая код как использованный),
— если счастливчиков было меньше 5 (например 2), то в следующий час раздаем 7 билетов и так далее.

Рандомность создает сам участник, попадая или не попадая в нужный промежуток времени )

Кинотеатр заполнен, задача выполнена.
UFO just landed and posted this here
Как я понял, основная ошибка прежде всего в том, что заказчик неправильно оценил вероятность того, что человек полезет на сайт проверять код. Причём ошибся на два порядка. Похоже, что он оценивал её в 100%, а реально вышло 0,4% :) Реально ему нужно было сделать порядка 125000 выигрышных билетов. А если статистики по подобным акциям нет, то явно нужно было использовать динамические алгоритмы розыгрыша, аналогичные по сути используемым, например, в игровых автоматах (слот-машинах).

Думается мне, что в данном случае это не ваш косяк… Со стороны заказчика должен был быть куратор проекта, который просто обязан был предусмотреть это. Не совсем понял из текста статьи, но судя по всему печать билетов с кодами и их дистрибуция — это была не ваша работа…
Не понятно зачем они специфицировали вам, что надо взять первые 500 номеров? Без этого вы бы сами скорей всего сделали равномерную выборку 500 выигрышных номеров из всего объема… Я бы по крайней мере сделал бы так.

Остальное — это тоже признак халтурно составленного ТЗ…

В общем заказчик сам себе злобный буратино, однозначно. После такого кое-кого у заказчика надо было поганой метлой из конторы…

«Первые 500» и «первые попавшиеся 500» на языке простого обывателя — очень сильно разные вещи. Второе и означет то, что вы написали. Исполнители повели себя непрофессионально. Но в качестве тупой отмазки халтуры, а не качественно проделанной работы, вот така как у вас ссылка на строку ТЗ со стыдливым опусканием значимого слова (а не анализом соответстви ТЗ и того что действительно нужно заказчику) — ога, рулит. После такого (если бы вздумали именно так отмазаться, а не признать и свою вину в случившемся), с кое-каким исполнителем не было смысла в дальнейшем иметь дело. Пусть дальше строит свою «карьеру» на манипуляциях с неоднозначным терминами в ТЗ с кем-нибудь другим.
Сильно разные вещи? 0_о «Первое попавшиеся» — это какое распределение случайной величины? Тут вроде бы программисты, а программирование до сих пор было точной наукой. Хочу услышать формальное определение, пригодное для алгоритмизации…

С таким же успехом заказчик мог просто сказать: «сделайте мне хорошо»… И видимо команда программистов должна была переквалифицироваться в дам полусвета, дабы кое-кто их работу халтурой не назвал и не отправил строить карьеру с кем-нибудь другим…

Вы хотите сказать, что команда должна была с самого начала поставить под сомнение требования заказчика? Вы серьезно? 0_о

Исполнители в этой статье повели себя вполне профессионально. Они аккуратно начали исполнять то, что заказчик им сказал, справедливо полагая, что заказчик знает, что он хочет… Оказалось не знает.

Более того, цитирую: «В итоге кинопрокатчик принял решение — заполнить кинотеатры любой ценой. Мы переписали всю логику для подтасовки результатов… » То есть заказчик в конце концов смог сформулировать что он хочет и ребята всё таки сделали то, что нужно заказчику. Очевидно, именно «заполнить кинотеатры любой ценой» и было изначальной целью заказчика…

Надеюсь это было соответствующим образом оплачено. В противном случае с таким заказчиком нет смысла в дальнейшем иметь дело. Лучше дальше строить свою «карьеру» с кем-нибудь другим…
UFO just landed and posted this here
UFO just landed and posted this here
>Хочу услышать формальное определение, пригодное для алгоритмизации…

Что мешало выяснить это у заказчика? Ах, аналитики решили, что они умнее не только заказчика, но и господа бога и, в итоге, сотворили потрясающую глупость, продемонстрировав феноменальный непрофессионализм. И у программистов, непосредственно кодирующих задачу тоже вопросов не возникло почему надо брать именно первые 500 и они не озадачили этим вопросом своего аналитика и/или ПМа? А почему вы хотите услышать от заказчика только формально математическое определение этого феномена, а не увидеть сразу его конкретную реализацию на любимом вами языке программирования? Чуго уж мелочиться — заказчик не предоставил код — давайте сделаем ему какашку за это! Круто, да.

>И видимо команда программистов должна была переквалифицироваться в дам полусвета, дабы кое-кто их работу халтурой не назвал и не отправил строить карьеру с кем-нибудь другим…

При чём здесь команда программистов??? Команда программистов и работа команды программистов — это только часть команды в целом и работы в целом. А анализом Пушкин должен заниматься??? А переговорами с заказчиком — Лермонтов? Вам такие понятия не знакомы? Мы ведём разговор о профессионалах, предоставляющих заказчикам РЕШЕНИЯ или о неграмотных таджиках-гастарбайтерах, набраных для копки траншеи у вокзала. Которые умеют копать, когда им скажешь, — «копай здесь», — и не копать, когда не скажешь? Вы предлагаете действовать как таджики. Ну, вас и будут нанимать только на таджикские работы.

>Вы хотите сказать, что команда должна была с самого начала поставить под сомнение требования заказчика? Вы серьезно? 0_о

Я хочу сказать, что аналитики или ПМы, кто там у них/вас есть должны были с самого начала прояснить для себя непонятные/неочевидные места. Да, совместно с заказчиком. Иначе нафига они нужны? Это их прямые обязанности, которые они не выполнили, либо выполнили чуть менее, чем халтурно. И, да, я это совершенно серьёзно. Более того, я вообще не представляю как возможно действовать иначе.

>Исполнители в этой статье повели себя вполне профессионально. Они аккуратно начали исполнять то, что заказчик им сказал

Ребята повели себя не очень профессионально, но, как минимум, вменяемо. Когда обнаружилось, что накосячили, всё-таки попытались совместно с заказчиком исправить ситуацию, а не стали быковать, тупо цепляясь за отсутствие строгого математического определения закона распределения типа «первые попавшиеся». Тот же способ действий, что предлагаете вы — полнейшая халява безответственных халтурщиков, окучивающих неопытных заказчиков, пока таковые не кончатся в пределах досягаемости. Тк ни один заказчик в своём уме не разместит у них ещё один заказ.

>Лучше дальше строить свою «карьеру» с кем-нибудь другим…

Именно! С вменяемыми подрядчиками. А не таджиками.
А ведь можно было поступить иначе. Разыгрывать приз только среди тех, кто проверил билет.
Sign up to leave a comment.

Articles