参加する代わりに
標準のポーカーデッキには54枚のカードがあります。 ゲームに参加していない2人のジョーカーがいなければ、52枚のカードが出てきます。 デッキをうまくミックスすれば、おそらく誰も作成したことのないユニークなカードの組み合わせを作成できます。 52のマップには52の異なる場所があるため:


画像内の組み合わせはそれほどユニークではないことがわかります。
トピックへ
最近、私はトランプでの「バー離婚」方法について学びました。そのおかげで、「賢い叔父さん」がまともな金額を獲得します。 一番下の行は次のとおりです。
「ブリーダー」はバーにやってきて、しばらくの間他の人とおしゃべりします。ほとんどの場合、若者の大企業に参加します。 彼は会社に加わり、とりわけ「彼」になろうとしています。 彼がいくらかの信頼を獲得し、彼に慣れた後、ブリーダーは、最も熱い気質の人を選択し、議論するために彼を育てました:
[金髪/身の低い人/帽子をかぶる人/適切なオプション]の直感はただの悪口だと聞いた! 次の各カードの色は(現時点ではブリーダーがカードのデッキを取り出して)推測できないと思いますか? デッキを好きなようにシャッフルできます! 推測されたカードごとに千ルーブルを支払います! そして、あなたが推測しないなら、あなたは私に2ルーブルを与えます、そして、あなたは私を4まで、8ルーブル以上まで投げます、よく、あなたは理解しますか? そして正直に言うと、一般スコアで負けた人、勝ちが少ない人だけがゲームを止めることができます。 行くの?
ほとんどの読者はこのスキームをすでに理解しており、笑顔でブリーダーが勝てる金額を把握しています。
プレイヤーが勝つ時間と勝つチャンスを増やすために行動する方法を考えていました(ゲームを拒否するのが最善の方法です!)。 当然、ゲームを停止するというルールを考慮していません。勝つことは不可能です。
何に?
まず、数字の状況を説明し、このゲームで勝つことがほとんど不可能な理由を理解します。 もちろん、ご理解のとおり、金額はさまざまな進行で増加しています。 プレーヤーは、1000(ルーブル)の増分で算術的に進行します。 「ブリーダー」は、「2」を分母とする幾何学的な進行を持っています。 当然、幾何学的進行は、算術よりもはるかに速く成長します。
10枚の無防備なカード(以下、無防備なカードは推測されたカードの色)の後、ブリーダーの賞金は1024ルーブルに等しくなります。
16枚の予想外のカードにより、勝利は65536(2 ^ 16)に等しくなります。 これは、プレイヤーが残りの36枚のカード(36 000ルーブル)を推測しても、負けることを意味します。 したがって、勝つには、37枚のカード(37,000ルーブル)を推測する必要があります。 その後、ブリーダーは32,768ルーブル(15枚のカード、2 ^ 15)のみを獲得し、プレイヤーは黒になります。 少ないカード-そして私たちは失いました。
どうやら:実際には37枚のカードを推測することは不可能です。

PHPの単純なループ
$cards = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); $len = count($cards); shuffle($cards); //, $times = 100000; $ok = 0; for($j = 0; $j < $times; $j++){ for($i = 0; $i < $len; $i++){ $t = mt_rand(0, 1); if($t == $cards[$i]){ $ok += 1; } } } echo $ok / $times;
私たちが期待することを示しています:平均して、26枚のカードが推測され(起動時に25,989を受け取りました)、プレイヤーは37枚ものカードを推測する必要があります。
しかし、私たちはコインを投げていません! デッキには合計で26枚の赤カードと26枚の黒カードがあることを知っているので、少ない色のカードを選択することでチャンスを増やすことができます。 したがって、少なくとも1枚の赤カードがデッキに残っていることがわかっている場合、赤カードを選択します。逆も同様です。
カードの色を選択する簡単なアルゴリズムを作成してみましょう。色はデッキ内にあります。
$cards = array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1); // 0 - // 1 - $len = count($cards); shuffle($cards); //, $times = 300000; $ok = 0; $red = 0; // for($j = 0; $j < $times; $j++){ for($i = 0; $i < $len; $i++){ $t = ($red > 0) ? 1 : 0; // , , - ($cards[$i] == 0) ? $red++ : $red--; // , , - if($t == $cards[$i]){ $ok += 1; } } } echo $ok / $times;
コード内のロジックにエラーがある場合は、プライベートメッセージを記述して、すぐに修正します。 また、より良いアルゴリズムがあれば、コメントに書いてください。間違いなく追加します。
結果は非常に複雑で、一般に、推測されるカードの数が増えました。29〜30の推測されるカードがあります。
#coding: utf-8 @cards_booster = Array.new(52) {|idx| idx = (idx <= 25) ? 0 : 1} # 10.times do @okay_winner = 0 # 100000.times do # @cards_booster.shuffle! # @reds = 0 # , @cards_booster.each do |card| our_card = @reds > 0 ? 0 : 1 # @okay_winner += 1 if card == our_card @reds += (card == 1) ? 1 : -1 # end end puts " #{@okay_winner / 100000} ." end
他のコードで確認すると、Rubyで堅実な結果が得られました:30( railsfunのおかげです )。これもプレイヤーが勝つには不十分です。 この場合の対処方法
「バイパス」方法
cなブリーダーを倒すことは本当に不可能ですか? ほとんどの場合、スカウトはそれほど賢くなく、このスキームを超えないため、異なる数のカードで結果を知りません。 カードの数が変化する状況を分析します。
当然、プレイヤーはデッキについて疑問を呈し(カードがどうにか変わったらどうする?!)、店の新しいデッキ(36枚のカード)でプレイすることを提案できます。 スカウトは、デッキが重要でないことを知って同意します。 36枚のカードのデッキのレイアウトは完全に異なります。
ブリーダーに勝つために、彼はプレイヤーが52枚のデッキを持つ前のバージョンから37の代わりに、15枚のカードを推測できないようにする必要があります。 その結果、プレーヤーが22枚のカード(22,000ルーブル)を推測できる場合、2 ^ 14 = 16384ルーブルでブリーダーの賞金を超えます。
36枚のカードの修正された配列でサイクルを開始すると、推測されるカードの平均数は20であることがわかります。デッキを変更しても、プレイヤーがあまりにも多くのカードを推測する必要があるため、勝つことは非常に困難です。 ただし、1つのケースでは幸運かもしれません。プレイヤーは22+を推測しますが、統計によると、プレイヤーは一般的に常に負けます。
おわりに
このようなゲームでは、すべての条件を満たし、理論的に勝つことはまずありませんが、実際には非現実的です。 唯一の方法は、条件を変更するかチートすることです。たとえば、シャッフルするときにいくつかのカードを覗きます。
PS
- 「敗者がゲームを停止する」というルールがキャンセルされた場合にのみ、勝つチャンスがあります。 その後、最初の運で賞金を受け取ることができます。
- 負けないための最善の方法は、ゲームを放棄するか、独自のラベル付き(斑点のある)デッキを使用することです(この場合、誰もが斑点のあるデッキを着用しないでください)
- このようなゲームをプレイするように友人を招待します。 トリックに気付かずに何人が同意するでしょうか? ただし、ご要望に応じて友人からお金を受け取ることはできません;)
vaxXxaに感謝し、初期条件を変更しました。 まず、ブリーダーは1ルーブルではなく2ルーブルを取得します。
勝利のスケジュールをありがとうございます、とても視覚的です:

また、シャッフル中に下の1枚のカードを見ると、勝つ可能性がどのくらい増えるのかという質問もありました。