Прочитали: 2391 Коментарів: 97 Рейтинг: 105
Все о футболе - і ми про футбол! Якось раз один користувач вирішив зіграти в таку онлайн-гру:
Гра (акція), присвячена чемпіонату світу з футболу, представляла собою нехитре поле три на три, заповнене футбольними м'ячами. Клікнувши по м'ячу, ми відкривали картинку з тим чи іншим товаром. При відкритті трьох однакових картинок учаснику гарантувалося безкоштовне отримання даного товару в одному з магазинів мережі. Також під одним з м'ячів було зображення червоної картки, відкриття якої означало кінець гри.
https://habr.com/post/413185/
Як видно з опису, правила елементарні. Напевно, багато хто з вас зіштовхувалися з подібними іграми. Ось тільки одна обставина: «Граючи вчотирьох з 6 номерів телефону за кілька днів (близько 15 партій) виграти не вдалося нікому».
Користувач вирішив з'ясувати, в чому тут справа, і згадав університетський курс матстатистику, щоб обчислити теоретичну ймовірність виграшу. А потім написав спеціальну програму, яка імітує гру.
Розрахунок для 9 полів зайняв би кілька аркушів паперу і не одну годину часу, тому було прийнято більш просте рішення. Змоделювати гру скриптом. Кілька десятків хвилин, гуртка кави, і скрипт готовий.
Запустивши скрипт, я отримав несподіваний результат - 25% виграшів.
Тобто кожна четверта гра повинна була бути виграшною. У теорії, але не на практиці. Чому так сталося?
Цілком логічно, що якщо в онлайн-грі передбачається якийсь виграш, то необхідний обмін даними з сервером.
F12 в Chrome, і починаємо дослідження. Граємо до кінця, одні оком поглядаючи в моніторинг мережі. Досить стандартна робота програми завантаження відеокліпів сторінки, скриптів, спрайтів і декількох наборів даних в форматі JSON. Але дивна річ, від моменту натискання кнопки «Почати гру» до її завершення немає ніякого обміну даними з сервером. Друга дивина - виграшний спрайт навіть не вантажиться, вантажиться тільки спрайт «Ви програли». Очевидно, що скрипт ще до початку гри «знає» її підсумок.
Виявляється, виграш і не передбачений!
Продовживши аналіз, користувач з'ясував, що порядок випадання спрайтів (зображень елементів гри) не випадковий, а запрограмований заздалегідь:
Мене зацікавив масив Outcome в скрипті, я ще раз глянув у JSON, і о, диво! Ви не повірите!
Так це ж порядок випадання спрайтів!
Абсолютно не важливо, в які поля ви клікаєте мишкою, спрайт відображаються в заданому порядку, створеному сервером. Сам сервер управляє процесом і регулює ймовірність.
Ось такі шанси на перемогу!
# Інтернет # шахрайство # геймер
Чому так сталося?