Другое Как обыграть казино?

K1BeR

Участник
Автор темы
18
53
Пожалуйста, отнеситесь к моей статье серьёзно. Здесь не будет мнимых тактик по «выигрышу» в казино. Только математика и алгоритмы. По началу я рыл интернет в поиске информации, но не нашёл ничего дельного. Именно это и сподвигло меня написать статью. Забегая наперёд скажу, что здесь будет написано о предсказывании псевдослучайной генерации.
Как работает рандом в SA:MP?
У компьютеров нет случайности. Здесь рандом - это алгоритм, основанный на математических операциях. Такой алгоритм называется генератором псевдослучайных чисел. Настоящая случайность существует только в природе, и то это довольно философская тема. То, что сейчас для нас случайность, может стать абсолютно прогнозируемой вещью в будущем. Наверняка вы когда-либо интересовались тем, как же всё-таки работает рандом в попытках обыграть в казино. Может быть, пытались зайти закономерность в последовательнастях выпадающих чисел? К сожалению, я не волшебник и предсказать рандом в казино пока что можно только в теории. Но я считаю, что достаточно близок к этому и в своей статье постараюсь это доказать. Однако, эту статью я пишу не просто так. Мне не хочется больше этим заниматься и я хочу привлечь внимание других людей к этому. Может быть, именно вы создадите первый в мире чит на казино?
Ядро Pawn
Pawn – си-подобный скриптовый язык программирования и бла-бла-бла.
Именно на нём пишутся сервера для нашей любимой игры. Для того, чтобы решить нашу задачу, нужно понять, как это работает изнутри. Обратимся к исходному коду, который, к счастью, был любезно оставлен авторами: тык
Обратите внимание на строку №446: именно здесь начинается нужная нам функция. Это линейный конгруэнтный генератор — один из самый популярных и простых в создании генераторов псевдослучайных чисел. Мы любезно позаимствуем эту фунцию в свой код. На основе этой функции я написал программу, позволяющую удобно генерировать числа. Код ниже:


Генератор:
int main()
{
    int mod;
    cout << "Enter module of number (0 if not): ";
    cin >> mod;
    while (true)
    {
        cin.ignore();
        cout << "Your number is " << noRandom(mod);
    }

    return 0;
}

*Это лишь пример, поэтому если вы бездумно скопируете, скорее всего у вас ничего не получится. В своей статье я буду вставлять только основную часть, а не весь код. Если вам понадобится, вы сможете самостоятельно написать нужную вам программу, потому что я описываю достаточно простые для понимания вещи.
Теория
Каждый линейный генератор псевдослучайных чисел имеет периодичность. Это значит, что через n генераций последовательность начнёт повторяться. В нашем случае это число 2^32. Проверить это можно написав следующий код:
Период:
void main()
{
    for(unsigned long long i = 0; i < RANDOM_PERIOD; i++)
    {
        noRandom();
        if (((i + 1) % 4294967UL) == 0UL)
        {
            cout << "\rProgress: " << int((double)i / (double)RANDOM_PERIOD * 100) << "%" << flush;
        }
    }
    cout << "\rProgress: " << "100% - copmleted" << endl;
    while(true)
    {
        cin.ignore();
        cout << noRandom() << endl;
    }
}
Здесь RANDOM_PERIOD – 2^32.

Вывод:

1670435196302.png

Мы видим, что числа совпадают. Это значит, что если знать некоторую последовательность чисел, то возможно определить следующее генерируемое число. Но есть один нюанс.

Практика: Решение в лоб
Я написал функцию, ищущую примерную последовательность среди псевдослучайно сгенерированых чисел. Что значит примерную? Это значит, что между числами в последовательности может быть до n неизвестных чисел. Почему примерную? Помните я говорил о нюансе? Так вот, если искать точную последовательность, то у вас скорее всего ничего не выйдет, потому что помимо вас на сервере множество игроков, вызывающих функцию random своими действиями. Я пытался проверить работу этой программы на реальном сервере с малым количеством игроков, заплатил свои кровные 150 рублей криптону для того, чтобы он соорудил мне плагин для SAMPFUNCS, ибо сам я под самп ничего писать не умею, но, увы, ничего не вышло. То ли я дурак, то ли лыжи не едут. Проще говоря, я потратил на тесты довольно много времени, а выхлопа как не было, так и нет. Зато всё прекрасно работает на сервере с одним игроком. Это я показал в видео - клац. А вот и код:
Поиск:
int optimizedSearch(vector<int> pat, int mod, int k)
{
    int M = pat.size();

    int result = -1;

    if (k > RANDOM_PERIOD - M)
        return result; // k is out of range

    int j, c;
    for (unsigned long i = 0; i < RANDOM_PERIOD - M - c; ++i) {
        c = 0;
        for (j = 0; j < M + c; ++j)
        {
            if (noRandom(mod) != pat[j - c])
            {
                if (j == 0)
                    break;
                ++c;
            }
            if (c > k)
            {
                c = k;
                break;
            }
        }
        if (j == M + c)
        {
            return 1;
        }
    }
    return result;
}
Алгоритм вернёт 1, если последовательность будет найдена и -1, если нет. Если вам вернётся 1, то нужно будет просто вызывать функцию рандома, чтобы получать следующие числа.
Почему в лоб? Есть ли ещё какое-то решение?

Да, скорее всего есть более быстрый алгоритм поиска, основанный на математический вычислениях. Я не стал этим заниматься,потому что, как я писал выше, мне надоело. Возможно, вложившись в его написание у вас получится отыграть все деньги, проигранные в баре? ;)

Что будет дальше?

Надеюсь, люди воспримут меня всерьёз и умельцы смогут сделать настоящий чит для казино. Но, к сожалению, сейчас это возможно только на бумаге.

Огромная благодарность за то, что прочитали мою статью. Надеюсь, она вдохновит вас на подвиги ;) Удачи.
 

SAsha133777

Потрачен
127
111
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Казино настроено чтобы держать у игрока азарт и доить с него деньги. В казино нету чистой случайности. Оно тупо не даст себя обыгрывать.
В прошлом веке можно было обыгрывать реальные казино, но тогда охранники отпиздят.
 

Marlboro_Gold

Участник
128
25
Казино настроено чтобы держать у игрока азарт и доить с него деньги. В казино нету чистой случайности. Оно тупо не даст себя обыгрывать.
В прошлом веке можно было обыгрывать реальные казино, но тогда охранники отпиздят.
ты сейчас говоришь про настоящее казино. которая по началу жирно даёт, а под конец забирает все. в сампе это цифарки, которые случайно выпадают, значит теоретически можно просчитать закономерность
 
  • Нравится
Реакции: Тёмкkaa

Rikxix

Известный
252
110
У меня нету ответов а только одно - ._____________________________.
 

chromiusj

Известный
Модератор
5,614
3,914

Вообще тема интересная,я однажды тоже занимался данным приколом,и думал что все высчитывается через арифметическую / геометрическую прогрессию , например при дублях практически всегда идёт луз,т.к выскакивает число из прогрессии и заменяет дубль
 
  • Нравится
Реакции: dayrez.cs и admin20001

K1BeR

Участник
Автор темы
18
53
Казино настроено чтобы держать у игрока азарт и доить с него деньги. В казино нету чистой случайности. Оно тупо не даст себя обыгрывать.
В прошлом веке можно было обыгрывать реальные казино, но тогда охранники отпиздят.
Как я уже писал выше случайность это довольно филосовская тема. Многие полагают, что чистая случайность существует только в природе, а я считаю, что чистой случайности не существует в принципе. Это лишь процессы, которые человек пока что не может контролировать и прогнозировать, но все может измениться. Даже реальные рулетки в большинстве случаев работают честно. Но есть такое понятие как математическое ожидание. Рассчитывается по формуле [вероятность выигрыша]*[количество денег на выходе]+[вероятность проигрыша]*[количество денег на выходе]. Если обусловимся, что каждый раз мы будем ставить по 1000 мандаринов то при выигрыше мы получим 1000*35-1000=34000(-1000 потому что одну 1000 мандаринов мы уже ставим и её не учитываемых). А при проигрыше мы будем получать -1000, то есть терять 1000. Следовательно в нашем случае мат. ожидание равно 1/37*34000-36/37*1000≈-54. Это значит, что по теории больших чисел на каждую ставку в 1000 мандаринов вы будете терять по 54 штуки. Поэтому казино всегда в плюсе. Ну а если рассуждать об обмане казино, то если вам крупно повезёт возможно вам не выведут деньги;)

ты сейчас говоришь про настоящее казино. которая по началу жирно даёт, а под конец забирает все. в сампе это цифарки, которые случайно выпадают, значит теоретически можно просчитать закономерность
Как я уже описал выше, казино не даёт в принципе. Это иллюзия, обман. Казино работает на психологии людей. Ты начинаешь проигрывать и ставить больше, больше, чтобы отыграться, а по итогу просто проигрываешь всё
 
Последнее редактирование:

chromiusj

Известный
Модератор
5,614
3,914
Как я уже писал выше случайность это довольно филосовская тема. Многие полагают, что чистая случайность существует только в природе, а я считаю, что чистой случайности не существует в принципе. Это лишь процессы, которые человек пока что не может контролировать и прогнозировать, но все может измениться. Даже реальные рулетки в большинстве случаев работают честно. Но есть такое понятие как математическое ожидание. Рассчитывается по формуле [вероятность выигрыша]*[количество денег на выходе]+[вероятность проигрыша]*[количество денег на выходе]. Если обусловимся, что каждый раз мы будем ставить по 1000 мандаринов то при выигрыше мы получим 1000*35-1000=34000(-1000 потому что одну 1000 мандаринов мы уже ставим и её не учитываемых). А при проигрыше мы будем получать -1000, то есть терять 1000. Следовательно в нашем случае мат. ожидание равно 1/37*34000-36/37*1000≈-54. Это значит, что по теории больших чисел на каждую ставку в 1000 мандаринов вы будете терять по 54 штуки. Поэтому казино всегда в плюсе. Ну а если рассуждать об обмане казино, то если вам крупно повезёт возможно вам не выведут деньги;)


Как я уже описал выше, казино не даёт в принципе. Это иллюзия, обман. Казино работает на психологии людей. Ты начинаешь проигрывать и ставить больше, больше, чтобы отыграться, а по итогу просто проигрываешь всё
Что ты можешь тогда сказать о боте Оливии?Там точно не стоит случайность
 

chromiusj

Известный
Модератор
5,614
3,914
Я честно не знаю что это. Если это на каком-то из серверов, то я играл только на Тринити
Бот Оливия это типо игрок в казино на арз,но бот,и там точно нет случайности,тк админы даже могут посмотреть в логах сколько она вывела денег с игроков
 

K1BeR

Участник
Автор темы
18
53
Бот Оливия это типо игрок в казино на арз,но бот,и там точно нет случайности,тк админы даже могут посмотреть в логах сколько она вывела денег с игроков
Спорить не буду, может быть там действительно нет чистой случайности. Это зависит уже от того, как разработчики реализовали работу. В статье я рассматривал именно "стерильные" условия с чистым псевдорандомом. Хотя, если разгадать, как именно работает подкрутка, то, думаю, что всё-таки возможно обыграть оливию. Но тоже только в теории.

Там не 50процентов шанс, намного ниже, можно раз семь слить подряд
если шанс 50% то у тебя математическое ожидание 0, следовательно по теории больших чисел, если играть бесконечно долго, то состояние твоего счета не изменится. А играть в рулетку себе дороже
 
Последнее редактирование:

K1BeR

Участник
Автор темы
18
53
Я думаю каждый программист понимает что рандома не существует и чит на казино все же возможно написать.
только вот почему-то в интернете по запросу "чит на казино" одни стилаки. В любом случае я для этого и написал статью, чтобы разработчики понимали, какие горизонты перед ними открыты. Вообще, довольно странно, что информации по этому поводу особо нет. Хотя игра довольно старая. Раньше я был одержим этой идеей и меня просто считали безумцем, а сейчас уже и я сам усомнился в своей адекватности. Однако, я видел один комментарий под видео одного душного деда от человека под ником @vla5102008. Он там говорил именно про что-то подобное.

Кстати, однажды со мной случился забавный случай. Мой друг сидел и крутил рулетку, ставя по 1 вирту. Я спросил, че он делает. Он ответил: "[Имя], ты же программист.", - а после этих слов можно и не продолжать, - "Ты должен понимать, что рано или поздно числа начнут выпадать заново". А я напомню, что период 2^32. Ходят слухи, что он до сих пор крутит ту рулетку
 

moreveal

Известный
Проверенный
925
624
Вообще, довольно странно, что информации по этому поводу особо нет.
да как нет? все об этом знают давно, и статей тож тысяча о генерации псевдослучайных чисел, но ты сам же сказал основные проблемы, с которыми предстоит столкнуться; и вот их никто не решил, и не решит, потому что узнать кто и когда вызывает функу рандома нельзя, если это не твой сервер :)
тем более, если мы говорим о каком-то крупном проекте, вероятнее всего там не простая генерация числа, а такой же алгоритм, уводящий тебя в минус