Такая вот задачка стоит: необходимо организовать что-то типа лотереи в интернет-магазине. Есть интернет-магазин (htc-online.ru), который уже функционирует, имеет посещаемость и заказы. Идея такова: каждый месяц будет проводиться розыгрыш подарков по номерам заказов. Т.е. есть заказы и из них будут каким-то образом выбираться победители. И вот стоит такой вопрос: как сделать розыгрыш чтобы он у людей вызывал максимальное доверие. Уточню, что розыгрыш действительно будет (это никакая не разводка). Магазин уже с именем и мы действительно будем случайным образом определять победителя и дарить ему подарок. Сначала думал просто тупо рэндомом выбрать номера заказов - победетелей. Но потом стал думать, что нужно чтобы розыгрыш был прозрачным для клиентов. т.е. как бы это правильно сказать, сделать какой-то механизм на сайте, чтобы пользователи сами могли влиять на розыгрыш, т.е. своими действиями повлиять на результат и этим самым убедиться, что победитель определился не просто программой (которую "недобросовестные" владельцы сайта могут запрогроммировать как угодно и выбрать того победителя, который им нужен), а именно действительно победитель был выявлен случайно. Или же не обязательно, чтобы пользовтель влиял как-то влиял на исход розыгрыша, но самое главное, чтобы ему было видно, что розыгрыш ДЕЙСТВИТЕЛЬНО случаен и без всякого подлога! В общем, короче, говоря, может кто-то когда-то встречался с такой задачей и знает или может быть есть идеи, как можно организовать розыгрыш призов на сайте, чтобы для пользователей это было максимально прозрачно (как то, что ведущий лезет в мешочек с бочонками, т.е. когда трудно обмануть). Заранее спасибо!
А зачем что-то программировать, если достаточно просто об этом объявить и пару записей поменять? Ясно дело, когда администрация подставляет, другое дело, когда клиент пишет какого-то бота и накручивает там рейтинг (ДОПУТИМ), чтобы приз получить. Победителя выбирать следует так: человек региструруется в лотерее, но может регистрироваться он там только в том случае, если совершил одну-две покупки, иначе понарегаются всякие школьники, много аккаунтов на одного человека для увеличения шансов.
Повесить на крон 1-го числа каждого месяца на 00:00 [sql]INSERT INTO win (id_user) SELECT id FROM users ORDER BY RAND() LIMIT 1[/sql]
а я вот такой вот вариат вижу: в день розыгрыша нужно получить какое-то случайное число. Ну например такими манипуляциями: сумма всех номеров заказов умножается на количество заказов и умножается на курс доллара в этот день и прибавляется сумма всех цифр курса евро (это щас отблады формулу сочинил). А затем мы делим это полученное число на количество заказов (например N). Берем остаток от деления, который обязательно будет лежать в интервале от 0 до N. Это и будет номер победитель! Что насчет этого скажете? Тут уж точно исключена подтасовка. Тем более что форумла расчета будет выведена заранее. Т.е. люди будут знать формулу, но никто же не будет знать какой в этот день будет курс доллара или евро (ну или другие какие-нибудь параметры, независящие от администрации сайта). Согласен, что в таком варианте тоже можно брешь найти, например если подогнать кол-во заказов под нужную величину, но это уже сложнее. А можно и вовсе взять хеш-функцию (md5 например) скажем от суммы всех заказов. Тут уж точно случайность обеспечена. Правда объясни обывателю что такое хеш.... )))
а я вот такой вот вариат вижу: в день розыгрыша нужно получить какое-то случайное число. Ну например такими манипуляциями: сумма всех номеров заказов умножается на количество заказов и умножается на курс доллара в этот день и прибавляется сумма всех цифр курса евро (это щас отблады формулу сочинил). А затем мы делим это полученное число на количество заказов (например N). Берем остаток от деления, который обязательно будет лежать в интервале от 0 до N. Это и будет номер победитель! Что насчет этого скажете? Тут уж точно исключена подтасовка. Тем более что форумла расчета будет выведена заранее. Т.е. люди будут знать формулу, но никто же не будет знать какой в этот день будет курс доллара или евро (ну или другие какие-нибудь параметры, независящие от администрации сайта). Согласен, что в таком варианте тоже можно брешь найти, например если подогнать кол-во заказов под нужную величину, но это уже сложнее. А можно и вовсе взять хеш-функцию (md5 например) скажем от суммы всех заказов. Тут уж точно случайность обеспечена. Правда объясни обывателю что такое хеш.... )))
Объявлять заранее номера-победители. Это должны быть номера заказов, которых еще небыло. Учитывая, что номера выдаются последовательно, у вас случится настоящий бум заказов, если разница между номером последнего заказа и номерами-победителями будет небольшой. Типа как "миллионный покупатель".