最も一般的な火曜日に、Gennady Obmanuevは突然素晴らしいアイデアを思いつきました。各プレイヤー自身が勝つチャンスを示すことができる宝くじを作成することです。 常に黒字を維持するために、各ゲームの終了時にGennadyは賞金の5%の名目手数料を受け取ります。
*ゲームについて簡単に
カジノの場合のように、プレーヤーがそのようなゲームをより長くプレイすればするほど、最終的に負ける可能性が高くなります。 しかし、素晴らしい戦術を考案してbyな叔父を欺くことは本当に不可能ですか?それにより、勝利のチャンスを増やすことができますか?
最初に、あらゆる努力で標準的な戦術を試してみましょう。ランダムな値での10万回の反復です。 平均して、これは体系的にプレイしない膨大な数の人々の結果を示します。 当然、5%の税金で100%の金利を設定するのは不合理です。したがって、料金は10%(Gennadyによって呼び出される最小値)から94%に制限されます。
私はphpしか知らないので、それについて書きます。それは誰もが理解できると思います
<?php $bank = 1000000000; // define('START_MONEY', 10000); $money = START_MONEY; // for($i = 0; $i < 100000; $i++){ $bet = mt_rand(10, 100); // = 10. $chance = mt_rand(10, 94); //94+ - $random = mt_rand(1, 100); $money -= $bet; $bank += $bet; // if($chance >= $random){ $money += $bet * 95/$chance; // :) $bank -= $bet * 100/$chance; // :) } } echo floor($money-START_MONEY);
結果は予測可能でしたが、ゲーム内のランダム性が非常に大きいため、体系的ではありませんでした。
このサイクルを5回開始し、結果を得ました。
- プレイヤーは225043を失います。
- プレイヤーは272766を失います。
- プレイヤーは320369を失います。
- プレイヤーは276055を失います。
- プレイヤーは254899を失います。
結果は嘆かわしいように見えます。私たちのプレーヤーはトリッキーな叔父に25初期お金を負っていました。 平均して、プレイヤーは100,000を超える反復回数で約250,000の通常ユニットを失います。 アルゴリズムにロジックを追加してみましょう。 当然、最も合理的なのは
break;
サイクルの最初に、しかし簡単な方法を探していません! ランダムな値を変更することから始めましょう。 厳密に設定された値で遊んでみましょう。 たとえば、最大のチャンスに対する最小の賭け。 そのような戦術は何につながりますか?
$bet = 10; $chance = 94;
結果として、もちろん、賭け金が減ったので、損失はずっと少なくなりました! 損失はより予測可能になっていることがわかりますが。 範囲は約50,000で、変動はほとんどまたはまったくありません。
- プレイヤーは50940を失います。
- プレーヤーは50,900を失います。
- プレイヤーは51274を失います。
- プレイヤーは51041を失います。
- プレイヤーは49344を失います。
何十もの初期の金額を失い、ofなGennadyに負っている場合、損失の大きさはそれほど重要ではありません。 特に、「時間通りに停止する」方向にアルゴリズムを変更することはありません。100,000回の反復後に肯定的な結果を得ることが可能かどうか疑問に思うからです。
最小の賭けと最小のチャンスでプレイしよう。
$bet = 10; $chance = 10;
再び負けます。 今回はスプレッドが非常に大きく、これは論理的です。なぜなら、勝利の可能性は最小限であるからです。
- プレイヤーは37650を失います。
- プレーヤーは58075を失います。
- プレイヤーは52660を失います。
- プレイヤーは43635を失います。
- プレイヤーは40310を失います。
ところで、興味深いのは、宝くじの最低料金が0.1%の場合、結果は次のようになることです。
- プレイヤーが83000を獲得しました!
- プレーヤーは78500を失います。
- プレーヤーは12,000を失います。
- プレイヤーが7000に勝ちます!
- プレーヤーは69,000を失います。
乗数は非常に小さいので、ベットはほぼ1000倍になりますが、まれにしか発生しないため、結果は完全に予測不能です。
勝つためにいくつかのアルゴリズムを適用してみましょう。 たとえば、勝ち金が多ければ多いほど、よりリスクが高くなります。 この方法で実装しました:
$bank = 1000000000; // define('START_MONEY', 10000); $money = START_MONEY; // for($i = 0; $i < 100000; $i++){ $bet = 10; $pre_chance = 100 * (2 - 0.94 * $money/START_MONEY); //94+ - if($pre_chance > 94){ $chance = 0.94; }else{ $chance = $pre_chance; } $random = mt_rand(1, 1000)/10; $money -= $bet; $bank += $bet; // if($chance >= $random){ $money += $bet * 95/$chance; // :) $bank -= $bet * 100/$chance; // :) } } echo floor($money-START_MONEY);
* これがうまくいくことを願って
そして、それは私には何ももたらされませんでした、結果の範囲は広かったですが、いずれにしても、私は失いました。
それから、「内ポケット」を整理して真剣な対策を試みました。 そこで、プレーヤーは、少なくとも何セントかとどまるために彼が何かに費やさないお金を積み上げます。 論理を変更しなければならなかったのは、今では明らかに100,000未満の試行があるからです。そして、私がやった最も重要なことは、プレーヤーの目標を設定したことです。 たとえば、ゲインを2倍にします。
$bank = 1000000000; // define('START_MONEY', 10000); $money = START_MONEY; // $pocket = $money/2; $money /= 2; $goal = START_MONEY*2; for($i = 0; $i < 100000; $i++){ if($money < START_MONEY/10){ break; //... } if($money + $pocket >= $goal){ break; //! } $bet = mt_rand(10, $money/10); // = 10. $chance = mt_rand(10, 94); //94+ - $random = mt_rand(1, 100); $money -= $bet; $bank += $bet; // if($chance >= $random){ $money += $bet * 95/$chance / 2; // :) $pocket += $bet * 95/$chance / 2; // :) $bank -= $bet * 100/$chance; // :) } } echo floor($money-START_MONEY);
そして、この状況でのみ、ある程度の確率で、私は比較的少量を獲得し始めました。 ただし、失うことも。
おわりに
割合が「機関」またはcなGennady Obmanuevに向かうゲームでは、私は多数の人々の長いゲームで勝つことができませんでした、そして、それが可能であることを疑います。 いずれにせよ、イベントは偶然に起こり、宝くじはいずれにせよ賞金を獲得するという事実のために、それは常に黒のままです。 この場合の税は、カジノのルーレットでのゼロと同じ目標を達成します。つまり、全体的な勝利の可能性をプレーヤーではなく機関にシフトします。
テキストおよびコードロジックのエラーをプライベートメッセージで報告してください。 すぐに修正します。
ところで、誰かがこの宝くじに当たるアルゴリズムを思い付くことができますか? とても面白いでしょう。 このゲームで本当に最適なアルゴリズムはどれですか?