برنده شدن در بازی انفجار با منطق ریاضی

 برنده شدن در بازی انفجار با منطق ریاضی

احتمالا تا الان اسم بازی انفجار (به انگلیسی Blast یا Crash) به گوشتون خورده. این بازی توی سایت های شرط بندی هست و افراد روش شرط بندی میکنن. نحوه کار بازی به این صورت هست که یک عدد تصادفی، قبل از شروع تولید میشه به نام ضریب، هرشخصی روی عددی شرط بندی میکنه مثلا 2. اگر ضریب به اون عدد برسه شما 2 برابر پولتون رو میگیرید و اگر نرسه تمام پولتون رو میبازید. چه باخت هایی که مردم توی این بازی ندادن.

قبل از نوشتن مطلب یه تحقیق کردم که ببینم کسی درباره این بازی چیزی نوشته یا نه. وبسایت ها و کانال ها پر بودن از مزخرفات و چرندیات درباره این بازی بدون هیچ منطقی. اگر قرار به بازی کردن به روش اونها باشه که بازی رو خودم با شانس خودم بازی میکنم. ولی در بین این ها یک انگلیسی زبان اینقدر خوب این بازی رو تشریح کرده و بررسی هایی که من تو ذهنم بود رو انجام داده که فکر کردم همون رو به فارسی توضیح بدم و مطلب رو ببندم! در انتها منابع رو مینویسم.

اول از همه بیاید درباره ساز و کار بازی صحبت کنیم. برای فهمیدن ساز و کار بازی باید کدی که این بازی اجرا میکنه رو ببینیم. متاسفانه خیلی از وبسایت ها کد رو نمایش نمیدن و نمیذارن ببینی چطور کار میکنه. تنها چیزی که نشون میدن Hash هر بازی هست که ثابت میکنه در زمان اجرای بازی ضریب تغییر نکرده و حتی براش یک ماشین حساب هم درست کردن که به شما ثابت میکنه این ضرایب ابدا عوض نشدن. اینجا و اینجا رو بخونید. یک وبسایت شرط بندی به نام roobet اومده و قطعه کدی که اجرا میشه رو گذاشته. با بررسی این کد به دو تابع مهم بر میخوریم که یک تابع میاد با هش هر بازی ضریب رو برمیگردونه و تابع دیگه، ضریب بازی قبلی رو. اگر این دوتابع رو توی یک حلقه تکرار کنیم. تمام ضریب هایی که این بازی از اول ساخته رو میتونیم بدست بیازیم. اما قبلش بدونید که توی تابع ساخت هش بازی، یک تیکه کد هست که در سه درصد مواقع ضریب 1 رو برمیگردونه! یعنی اون 1 هایی که موقع بازی بهشون بر میخورید 3 درصد مواقع اتفاق میافتن.

import matplotlib.pyplot as plt
import numpy as np
import hashlib
import random
import string
import hmac

e = 2**52
salt = "0000000000000000000fa3b65e43e4240d71762a5bf397d5304b2596d116859c"
game_hash = '100af1b49f5e9f87efc81f838bf9b1f5e38293e5b4cf6d0b366c004e0a8d9987'

def get_result(game_hash):
    hm = hmac.new(str.encode(game_hash), b'', hashlib.sha256)
    hm.update(salt.encode("utf-8"))
    h = hm.hexdigest()
    if (int(h, 16) % 33 == 0):
        return 1
    h = int(h[:13], 16)
    e = 2**52
    return (((100 * e - h) / (e-h)) // 1) / 100.0

def get_prev_game(hash_code):
    m = hashlib.sha256()
    m.update(hash_code.encode("utf-8"))
    return m.hexdigest()

# Update to latest game's hash for more results
game_hash = '100af1b49f5e9f87efc81f838bf9b1f5e38293e5b4cf6d0b366c004e0a8d9987' 
first_game = "77b271fe12fca03c618f63dfb79d4105726ba9d4a25bb3f1964e435ccf9cb209"

results = []
count = 0
while game_hash != first_game:
    count += 1
    results.append(get_result(game_hash))
    game_hash = get_prev_game(game_hash)
    
results = np.array(results)

با این کد تمام نتیجه بازی ها که حدود 619000 بازی بوده، توی یک آرایه results نوشته میشه و حالا میشه موارد مختلف رو بررسی کرد. اگر کد زیر رو اجرا کنیم می‌بینیم که احتمال اومدن ضریب 1.99 و ضریب های کمتر از اون چقدره

multiplier = 1.99
(results <= multiplier).mean()

با اجرای این کد عدد 0.517060049435370 بدست میاد که باید در صد ضرب بشه تا درصدش بدست بیاد! یعنی در حدود 51.7 درصد احتمال داره عدد کمتر از 1.99 باشه، برای ضریب 2 و کمتر از اون هم این احتمال 51.94 هست. برای ضریب 10 و کمتر از اون احتمال 90 درصده.

در تصویر بالا میبینید که از 619000 تا بازی بیش از 350 هزارتا بازی ضریب بین 0 تا 2.5 بوده.

(در نظر بگیرید که کد اصلی حاوی یک سری فرمول هست که خود طرف نوشته و کار همین بازی رو انجام میده و ثابت کرده که عدد بدست اومده با این فرمول ها نسبت به نتیجه های بازی بسیار شبیه اند. در نتیجه من اون ها رو ننوشتم)

این احتمالات به این درد میخوره که در ادامه ما میایم و نگاه میکنیم که اگر من 1دلار یا هزارتومن رو با یک ضریبی بازی کنم شانس بردن من چقدره؟

multiplier = 1.05
(results < multiplier).mean() * -1 + (multiplier - 1)*(results >= multiplier).mean()

عدد بدست اومده 0.03- هست که نشون میده حتی بازی با این ضریب هم درنهایت شما 300 تومن یا 3 سنت ضرر میکنید. با هر ضریب دیگری هم وضع همینه. نمودار زیر رو نگاه کنید:

خط آبی همون روش تئوری و فرمولی هست و خط نارنجی، نشون دهنده ضرایب در بازی واقعی هست. همونطور که دیده میشه، با هیچ ضریبی شما به سود نمیرسید و همیشه در بازه منفی هستید.

بحث ریاضی تقریبا تمومه و نشون میده این بازی جز ضرر هیچی نداره اما یکم توضیح میدیم روش هایی که میگن رو این بازی جواب میده

روش مارتینگل Martingale

این یه نوع روش بازیه که توی فرانسه حدود دویست سال پیش ابداع شده و برای شیر یا خط بوده. توضیحات بیشتر رو توی ویکیپدیا بخونید. توی این روش شما ضریب رو مثلا 2 انتخاب می کنید و با هزارتومن شرط بازی می کنید. اگر بردید دوباره با هزارتومن و اگر باختید، مبلغ رو دوبرابر میکنید تا ببرید اگر بازم باختید دوباره دوبرابر، تا موقعی که ببرید. هروقت بردید، برمیگردید به هزار تومن.

negatives = []
in_a_row = 0
for multiplier in results:
    if multiplier < 2:
        in_a_row += 1
    else:
        in_a_row = 0
    negatives.append(in_a_row)
negatives = np.array(negatives)

for i in range(1, 14):
    print("Probability of Losing %d Game(s) in a Row:"%i, (negatives >= i).mean())

Probability of Losing 1 Game(s) in a Row: 0.5170600494353705
Probability of Losing 2 Game(s) in a Row: 0.2671222475322703
Probability of Losing 3 Game(s) in a Row: 0.13786652449958803
Probability of Losing 4 Game(s) in a Row: 0.07155042892453836
Probability of Losing 5 Game(s) in a Row: 0.03690528118386403
Probability of Losing 6 Game(s) in a Row: 0.018866217547941
Probability of Losing 7 Game(s) in a Row: 0.0096092020872712
Probability of Losing 8 Game(s) in a Row: 0.004901533142700205
Probability of Losing 9 Game(s) in a Row: 0.002457228711287743
Probability of Losing 10 Game(s) in a Row: 0.0012504240779334078
Probability of Losing 11 Game(s) in a Row: 0.0006074411541381929
Probability of Losing 12 Game(s) in a Row: 0.00028594969224058546
Probability of Losing 13 Game(s) in a Row: 0.00012439619379957673


کد بالا برای اون تمام اون 619000 بازی نشون میده که شانستون توی باختن 8 دست پشت هم حدود 0.4 درصده.

من این روش رو بازی کردم و نتیجه تا یک جایی خوب بوده. من حساب کردم اگه با هزارتومن شروع کنم و قرار باشه 8 دست پست سر هم ببازم در نتیجه به 257 تومن پول نیاز دارم. 2 به توان 8 که میشه 256 بعلاوه هزارتومن. در نتیحه 260 تومن توی بازی ریختم و 4 ساعت بازی کردم. این مدت یکسره نبود و چندساعت توش استراحت داشت. خیلی اتفاقا افتاد تو بازی ولی یک لحظه هم از این روش منحرف نشدم. جایی رسید که هشت دست پشت هم باختم ولی برگشتم به بازی. چون توی این مدت 260 تومن رو به 477 رسوندم، این مبلغ اضافی باعث شد تا بتونم دست نهم رو هم دووم بیارم. همونجور که درباره این روش میگن برای برنده شدن به این روش باید پول نامحدود داشته باشی چون هردفعه شرط دوبرابر میشه.

بین این 4 ساعت دوبار 13 دست پشت هم ضریب کمتر از 2 اومد؛ که یکبار پشت تلفن بودم و بازی نکردم و شانس اووردم! و دفعه بعد رو باختم. 13 دست عدد زیادیه تقریبا 8 و دویست میلیون میخواد که بتونید دووم بیارید و هزارتومن سود کنی. البته من به این دید نگاه کردم که آیا میتونه حقوق ساعتی 27 تومن رو پوشش بده یا نه. که پوشش میده اما نه اینکه تو آخرین لحظه کل پولت بره!

موضوع بعدی اینه که میشه ضریب رو روی 1.2 گذاشت و نه 2. در این حالت بازم باید مبلغ شرط رو دوبرابر کنید و اون 257 تومن سرمایه اولیه سرجاشه فقط در اینصورت سودتون تو هربازی کم میشه و باید 5 دست بیشتر بازی کنید تا به اون سود با ضریب 2 برسید. همونطور هم که بالا دیدید شانستون تغییر ملموسی نمیکنه نهایت در حد یک درصد اما شانس اینکه 8 بار، پشت هم نبازید خیلی کم میشه.

روش دیگر

یک روش دیگه هم هست که من انجام ندادم ولی میگن جواب میده. حتی توی بعضی سایت ها میشه اتوماتیکش کرد. روش به این صورته که شما ضریب رو بین 300 تا 500 انتخاب میکنید مثلا ضریب 300 بعد 500 تک تومنی شرط میذارید هردفعه. احتمالا 150 دست میبازید (75 هزارتومن) ولی در دست بعدی که 300 یا بالاتر میاد شما 150 هزارتومن سود میکنید که اگه اون 150 باری که باختید رو ازش کم کنید 75 هزارتومن براتون میمونه. کاملا هم اتوماته، میذارید هر دفعه همینقدر شرط ببنده و ولش میکنید!

جزئیاتی که فهمیدم:

1- سایت های شرط بندی ایرانی کلاهبرداری اند. کل سایت نه برای سود از طریق شرط بندی بلکه برای کلاهبرداری طراحی شده. یک نمونه اینجاست که همونطور که مردم میگن و احتمالش بالاست، گاهی اوقات یک شخصی قبل از بازی ضریب ها رو دست میزنه. مثلا موقعی که جمع مبلغ های شرط بالا باشه. اثباتی که توی سایت ها میبینید یعنی در موقع بازی این ضریب تغییر نکرده. اصلا این موضوعات رو کنار بذاریم شما خوش شانس ترین فرد دنیا با صد هزارتومن پول و ضریب 1000 بازی میکنید و میبرید، بنظر شما آیا این پول رو بهتون میدن؟؟؟؟ حتی جایی برای شکایت نیست. چیزی که نه قانونی داره و نه ناظری داره که آیا بازی ها منصفانه هستن، چرا باید پول رو به شما بده. کازینوهای درست حسابی خارجی به غیر از اینکه کلی قانون روشون نظارت داره میگن که 49 درصد مواقع شما میبرید و 51 درصد کازینو و سود کل کازینو از اون 1 درصد هست.

شما به شکل و ظاهر این بازی توی سایت نگاه کنید:

معلومه که کسی که بازی رو ساخته هدف دیگه ای به غیر از جذب کاربر داشته. مقایسه کنید با بازی ای که شرکت Pascal Game ساخته.

نمیخوام طرفداری از این شرکت یا این بازی کنم اما انفجار ساخت این شرکت پنج دست قبل از شروع مسابقه ضریب ها ساخته شدن و انگ اینکه یک اپراتور قبل از بازی ضریب ها رو دستکاری میکنه منتفیه.

2- توی این بازی های انفجار ایرانی، در کنار ضریب 1 ضریب 0 هم وجود داره که اصلا منطقی نیست. اگر بخواییم از دید سایت به موضوع نگاه کنیم، باید برای شانس بیشتر خودش، تعداد دفعاتی که ضریب 1 میاد بیشتر بشه که همه ببازن نه اینکه ضریب صفر هم داشته باشیم. چون ضریب های دیگه همه از 1 شروع میشن نه از صفر. در اون صورت باید ضریب 0.5 هم داشته باشیم.

3- ریاضی دروغ نمیگه و روش مارتینگل هم جواب نمیده اما این درصورتیه که مثل من پشت هم بازی کنید. یکی از راه هایی که میشه شانس رو بیشتر کرد اینه که در زمان هایی که پشت هم ضریب های کم میاد، بازی نکنید. نه برای اینکه ضریب بعدی قطعا بالای 2 هست برای اینکه “شانستون” بیشتر بشه که ضریب بعدی بالای 2 باشه! و حتی برعکس در زمان هایی که ضریب های بالا زیاد ظاهر میشن، طبق همون احتمالات ضریب های بعدی کمتر از 2 هستن.

منابع:

گیتهاب و یوتیوب Minding The Data

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *