Привет.
Наверное вы уже видели тему про "лоттерею шапок"...
Скажу сразу, что сама идея лотереи мне сразу понравилась, хоть её придумали и не в России, а скопировали у буржуев...
Но эта штука вполне забавная и если её грамотно сделать, то она принесёт новый интерес в ТФ2 :) Играть многим надоедает... а тут бац - и новая забава.
Главное чтобы лоттерея была честная, прозрачная и не вызывала вообще никаких подозрений в нечесности.
Поэтому я и решил помочь ребятам придумать оптимальный и честный механизм лотереи.
Первая схема которую я придумал (И которая была использована в 1-ом розыгрыше) была такая:
Старая схема рандома:
1) Сначала организаторы собирают 54 оружия с желающих поучаствовать (именно столько оружий надо для крафта случайной шапки) и составляют список, где записано у кого какой номер билета. Всего 54 билета.
2) Запаковывают этот сисок в архив под паролем и выкладывают в открытый доступ, чтобы его могли все скачать заранее до розыгрыша. Но пароль от архива пока не дают, чтобы никто кроме организатора не знал номеров.
3) Потом ищется ответственное лицо, которое сгенерирует случайное число. Этот человек не знает пароля от архива и следовательно не знает у кого какой билет. Вобщем по задумке, это должен был быть кто-то авторитетный человек, типа админов геймер-ру, кого нельзя было бы заподозрить в фальсификации.
Вобщем этот независимый человек генерирует случайное число и сообщает его всем.
4) После этого огранизаторы лоттереи сообщают пароль от архива - и теперь все могут открыть этот архив со списком билетов - и узнать кому этот билет принадлежал.
Вот так и проводился 1-й розыгрыш.
Но проблема в том, что этот способ не у всех вызвал доверия. Потому что в качестве ответственного лица привлечь администраторов сложно... У них и без этих игр есть заботы... А другим людям поверят не все. Вобщем в любом случае, человеческий фактор присутствует - и заподозрить можно кого угодно... а это снижает доверие к такой схеме.
Поэтому, я придумал другой способ!
Сначала небольшое введение:
Наверняка некоторые из вас знают, что все буквы в компьютере имеют свой машинный код. (HEX - в 16-тиричной системе и DEC - в десятичной системе). Нас интереует десятирийчный код DEC
Например, русские буквы имеют коды от 192 до 255, а английские буквы - от 65 до 122. Вот эти коды -
Таким образом, любую букву можно перевести в цифры.
А я могу сделать такую программу, которая будет перекодировать любые буквенные символы в машинные коды. И не только буквы, но и слова - просто складывая коды всех букв в сумму.
С помощью такой программы можно будет высчитать сумму всех кодов всех букв из этих слов.
Это было вступление...
А теперь о новой схеме рандома, которую я предлагаю:
1) Организаторы собирают 54 оружия с желающих и составляют список, где записано у кого какой номер билета. Всего 54 билета. Как было и раньше...
А дальше уже изменения:
2) Выставляют этот сисок в открытый доступ (без всякого архивирования и паролей). Чтобы все сразу видели у кого какой билет.
3) Когда список готов и выставлен, то огранизаторы сообщают, что ровно через 24 часа будет определёт выигрышный номер. (случайное число от 1 до 54)
4) А случайное число будет выбрано таким образом:
На неком независимом сайте (где постоянно и очень регулярно выкладываются новости, например на
И взять из этой новости 3 слова. (10-е слово, 20-е слово и 30 слово).
5) Эти слова мы вставляем в программу, которая перекодирует все буквы в этих словах в машинные коды и слошит эти цифры в сумму!
Таким образом, получается "рандомное" число.
Рандомное оно потому, что заранее ведь никто не может угадать какая новость будет добавлена через 24 часа на таких сайтах. На крутые новостные ресурсы никто повлиять не может. Поэтому всё честно и слова действительно будут рандомные. Сделовательно и число тоже получится рандомное.
Правда это число будет очень большое (намного больше, чем диапазон от 1 до 54, котрый нам нужен)
Поэтому программа будет запускать цикл и вычитать из полученной суммы число 54 до тех пор, пока результат не окажется в пределах от 1 до 54.
Короче говря, в итоге мы и получим рандомное число в нужных пределах. И именно этот номер билета будет считаться выигрышным. :-)
Вот такая вот идея.
Программу такую я могу написать гораздо быстрее, чем я писал все эти объяснения....
Надеюсь хоть кто-нибудь понял мою писанину :)
Если осилили "многобукаф", то высказывайтесь. Если чего-то не поняли, спрашивайте...
Вобщем, програмку я уже сделал!
Можете тестировать и пробовать:
p.s: Я сделал так, чтобы пробелы и переходы строк не подсчитывались. (они ведь тоже коды имеют но считать не будут).
И ещё учтите, что Заглавные буквы имеют другой код чем маленькие. Это не одно и тоже. Также английские и русские буквы тоже имеют разные коды. Ну вобщем, вы знаете :)
Вот, например, я ввёл текст "Привет Участникам Лотереи".
Из этого текста получилось число 35 :-) (для примера)
Когда для 2-го розыгрыша наберётся 54 билета, то организаторы лотереи должны выложить в общий доступ список участников где будет написано у кого какой номер билета....
И ровно через 24 часа после публикования списка нужно будет посмотреть последнюю новость на сайте
Пользователи могут сами это сделать.
Нужно взять из той новости 10-е, 20-е и 30 слова и ввести их в перекодировщик.
Например, если бы розыгрыш был в данную минуту, то надо было бы взять из этой новости -
10-е слово: не
20-е слово: побывал
30-е слово: сами
вводим в перекодировщик все эти 3 слова - не побывал сами
получаем число - 22