WOO logo

このページ

ビデオポーカー(暗号化版)

このページ

概要

このページでは、暗号技術を用いて配られるカードが事前に決定されるビデオポーカーのプレイ方法について解説します。ビデオポーカーの基本ルールがわからない場合は、私のビデオポーカーのメインページをご覧ください。

このページでは、Cypto.Games を取り上げます。Cypto.Games には、以下の3種類のビデオポーカーがあります。

  • ジャック以上
  • 10以上
  • ボーナスポーカー

プレイヤーは10クレジットを賭ける必要がありますが、仮想通貨の価値はプレイヤーが自由に決めることができます。私の意見では、10クレジットというステップは、不必要に状況を混乱させています。

公正なカジノ

CryptoSlots Casino
3.9 / 5.0
Players rated CryptoSlots Casino 3.9 out of 5 Stars
Sign Up Reload bonus

44% ハロウィンボーナス

$10~$99が44%オフ。交換回数:1日2回。対象ゲーム:全ゲーム(ジャックポットトリガーを除く)。有効期限: 2025年10月1日(水)午前0時01分から2025年10月31日(金)午後11時59分(米国東部夏時間)まで。

CryptoWins Casino
3.9 / 5.0
Players rated CryptoWins Casino 3.9 out of 5 Stars
Sign Up bonus - ベタベタ

77% 最大
₿1

新規顧客向けオファー。利用規約が適用されます。18 歳以上。このオファーは、オンタリオ州在住のプレイヤーにはご利用いただけません。新規顧客向けオファー。利用規約が適用されます。19 歳以上。最低入金額: 5 ドル。最大キャッシュアウト額: 30,000 ドル。一部のゲームのみ: オンライン スロットのリストについては、Web サイトをご覧ください。ボーナスのプレイスルーは 10 日間です。

分析

以下の表は、6-9-20-75-500ジャックス・オア・ベターのペイテーブルを分析したものです。右下のセルはリターンが97.97%で、ハウスエッジは2.03%です。

ジャックス・オア・ベター分析

イベント支払う組み合わせ確率戻る
ロイヤルフラッシュ500 34,706,466 0.000021 0.010447
ストレートフラッシュ75 1億8417万8161 0.000111 0.008316
フォー・オブ・ア・カインド20 3,924,486,891 0.002363 0.047252
フルハウス9 19,115,939,799 0.011508 0.103572
フラッシュ6 19,427,500,088 0.011696 0.070173
真っ直ぐ4 18,354,238,557 0.011049 0.044198
スリー・オブ・ア・カインド3 123,573,760,275 0.074393 0.223178
ツーペア2 214,462,314,819 0.129108 0.258217
ジャックス・オア・ベター1 356,047,418,052 0.214344 0.214344
その他すべて0 905,977,999,992 0.545408 0.000000
合計1,661,102,543,100 1.000000 0.979696

以下の表は、5-6-22-75-500 Tens or Betterのペイテーブルを分析したものです。右下のセルはリターンが97.97%で、ハウスエッジは2.03%です。

10以上の分析

イベント支払う組み合わせ確率戻る
ロイヤルフラッシュ500 38,106,048 0.000023 0.011470
ストレートフラッシュ75 1億8783万8625 0.000113 0.008481
フォー・オブ・ア・カインド22 3,915,577,076 0.002357 0.051859
フルハウス6 19,084,542,744 0.011489 0.068934
フラッシュ5 18,600,477,537 0.011198 0.055988
真っ直ぐ4 20,611,548,487 0.012408 0.049633
スリー・オブ・ア・カインド3 123,201,590,075 0.074169 0.222506
ツーペア2 213,933,852,009 0.128790 0.257581
10以上の数字1 420,598,763,532 0.253205 0.253205
その他すべて0 840,930,246,967 0.506248 0.000000
合計1,661,102,543,100 1.000000 0.979657

以下の表は、5-8-25-35-75-45-500ボーナスポーカーのペイテーブルを分析したものです。右下のセルはリターンが97.94%で、ハウスエッジは2.06%です。

10以上の分析

イベント支払う組み合わせ確率戻る
ロイヤルフラッシュ500 35,737,262 0.000022 0.010757
ストレートフラッシュ45 1億7219万1438 0.000104 0.004665
4枚のエース70 3億2556万6459円0.000196 0.013720
2、3、4が4つ35 875,937,305 0.000527 0.018456
5からKまでの4つの数字25 2,725,708,639 0.001641 0.041023
フルハウス8 19,133,720,127 0.011519 0.092149
フラッシュ5 18,714,893,725 0.011267 0.056333
真っ直ぐ4 18,432,640,328 0.011097 0.044387
スリー・オブ・ア・カインド3 123,733,729,692 0.074489 0.223467
ツーペア2 214,762,339,278 0.129289 0.258578
ジャックス・オア・ベター1 358,572,571,638 0.215864 0.215864
その他すべて0 903,617,507,209 0.543987 0.000000
合計1,661,102,543,100 1.000000 0.979398

公正なゲーム

このバージョンのビデオポーカーは、暗号通貨を扱うインターネットカジノでのみプレイされているようです。簡単に説明すると、このゲームでは0から51までの10個の固有の乱数をそれぞれ1/52の確率でランダムに選び、デッキの10枚のカードに割り当てます。最初の5つの数字はプレイヤーがディールで受け取るカードを決定し、次の5つの数字はドロー時にプレイヤーが順番に受け取るカードを決定します。例えば、プレイヤーが2枚のカードを捨てた場合、ドロー時にリストの6番目と7番目のカードを受け取ります。捨てられたカードの位置は関係ありません。

以下の暗号技術の使用方法の説明は、読者が暗号技術の概念にある程度精通していることを前提としています。基本的な内容については、私のサイコロ(暗号化版)のページをご覧ください。より高度な読者のために、ゲームがランダムに10枚のカードを選ぶプロセスを以下に示します。

  1. 「position」というポインターを定義し、それを 0 に設定します。
  2. サーバー、クライアント シード、サーバー シードをこの順序で結合します。
  3. 手順 2 の文字列の SHA-512 ハッシュを生成します。
  4. 手順 3 のハッシュの「位置」から最初の 2 文字を 16 進数から 10 進数に変換します。
  5. 4 から末尾の 2 桁を取得します。
  6. ステップ 5 の結果が 51 以下で、まだ見つかっていない場合は、それが最初の 10 枚のカードのうちの 1 枚になります。
  7. 「位置」を 2 増やします。
  8. 10 枚の異なるカードが見つかるまで、手順 4 ~ 7 を繰り返します。
  9. 最初に見つかった 5 枚のカードが、左から右の順に配られます。
  10. 2枚目の5枚のカードは、ドロー時に配られる順番待ちの列に並びます。例えば、プレイヤーが3枚のカードを引いた場合、6枚目、7枚目、8枚目のカードが配られます。
  11. 手順 6 から実際のカードまでのカードの位置を取得するには、次の手順を実行します。
    • A. 手順 4 の結果を 13 で割り、余りを求めます。
    • B. 手順 11A の結果を次のようにマッピングしてランクを取得します。0 を A、1 を 2、2 を 3、...、9 を 10、10 を J、11 を Q、12 を K にします。
    • C. 手順 4 の結果を 13 で割り、余りを DROP します。
    • D. 手順 11C の結果を次のようにマッピングしてスーツを取得します。0 をスペード、1 をハート、2 をダイヤ、3 をクラブ。

次の表は、数字からトランプカードへの変換を示しています。

カード変換表

ランクスペードハートダイヤモンドクラブ
0 13 26 39
2 1 14 27 40
3 2 15 28 41
4 3 16 29 42
5 4 17 30 43
6 5 18 31 44
7 6 19 32 45
8 7 20 33 46
9 8 21 34 47
10 9 22 35 48
J 10 23 36 49
質問11 24 37 50
K 12 25 38 51

これは例を必要としていると思いませんか?一つ例を挙げてみましょう。

ビデオポーカー 暗号通貨ゲーム 画像4

上記の「おそらく公平」画面で私が達成したい 2 つの重要なことは、デフォルトのものではなく自分のクライアント シード (bc7v9bn70d7n07sn) を選択し、次のサーバー シード (64e701539ecf4c03b90ecd957d6675b2f72c3fd84f04dc5eb63eed8b9a58b95b) のハッシュを記録することです。これは、「次のサーバー シード SHA256」というタイトルの行にあります。

ビデオポーカー 暗号通貨ゲーム 画像 2

上の画面では、私はジャック/エースのオフスーツを 1 番目と 4 番目の位置に持っています。

ビデオポーカー 暗号通貨ゲーム 画像 3

上の画面では、ドローでジャックのペアに改善しています。

ビデオポーカー 暗号ゲーム 画像 5

上のスクリーンショットでは、「Fair Gaming」に戻り、カジノが 2 つのシードをどのように使用してゲームで実際に表示されるカードを取得するかを確認しました。

ビデオポーカー 暗号通貨ゲーム 画像4

上の画面は、どのカードを配るべきだったかを判断するために必要な情報を示しています。順を追って説明しましょう。

  1. 手順は曖昧ですが、サーバーシードとクライアントシードをこの順番で結合するはずです。そうすると、2XMpPAbEw3qdH3HQla2K5zNwoNEFHOEYolkB969jbc7v9bn70d7n07sn が生成されます。
  2. 次に、ステップ1の結果のハッシュを取得します。結果は3a959bbaffd9b3928b28431c2ee688792c67a45f1933b9e11af3c7784a7bbda5674d2e768ac330a04982b9fa943c4c2cf49c952d9db956b1cd3b38c006c3a2d6となります。各文字は0から9までの数字、またはAからFまでの文字であることに注意してください。全体として、16進数では非常に大きな数値になります。
  3. ハッシュの最初の 2 文字 (3a) を 16 進数から 10 進数に変換します。3*16 1 + a*16 0 = 48 + 10 = 58。
  4. 手順 3 から末尾の 2 桁を取得します (桁は 2 桁しかありません)。それでも 58 です。
  5. ステップ4の結果が0から51の場合、それをカードにマッピングします。58>51なので、ハッシュの次の2桁に進みます。
  6. ハッシュの次の 2 桁は 95 です。これは 10 進数では 9*16 1 + 5*16 0 = 144 + 5 = 149 になります。
  7. 149の最後の2桁は49で、0から51の範囲にあるので、カードに割り当てます。具体的には、49はクラブのジャックに割り当てます。これは左から最初に配られるカードです。
  8. ハッシュの次の 2 桁 (9b) を 16 進数から 10 進数に変換します。9*16 1 + b*16 0 = 144 + 11 = 155。
  9. 最後のステップの末尾の 2 桁、つまり 55 を取得します。
  10. 55 は 0 から 51 の範囲外なので、ハッシュ内のその 2 桁をスキップします。
  11. ハッシュの次の 2 桁 (ba) を取得し、16 進数から 10 進数に変換します。b*16 1 + a*16 0 = 11*16 + 10*1 = 176 + 10 = 186。
  12. 最後のステップの末尾の 2 桁は 86 です。
  13. 86 は 0 から 51 の範囲外なので、ハッシュ内のその 2 桁をスキップします。
  14. ハッシュの次の 2 桁 (ff) を取得し、16 進数から 10 進数に変換します。f*16 1 + f*16 0 = 15*16 + 15*1 = 240 + 15 = 255。
  15. 最後のステップの末尾の 2 桁、つまり 55 を取得します。
  16. 55 は 0 から 51 の範囲外なので、ハッシュ内のその 2 桁をスキップします。
  17. ハッシュの次の 2 桁 (d9) を 16 進数から 10 進数に変換します。d*16 1 + 9*16 0 = 13*16 + 9*1 = 208 + 9 = 217。
  18. 最後のステップの末尾の 2 桁、つまり 17 を取得します。
  19. 17は0から51の範囲にあるので、カードにマッピングします。具体的には、17はハートの5にマッピングされます。これは左から2番目に配られるカードです。
  20. ハッシュの次の 2 桁 (b3) を 16 進数から 10 進数に変換します。11*16 1 + 3*16 0 = 13*16 + 9*1 = 176 + 3 = 179。
  21. 最後のステップの末尾の 2 桁は 79 です。
  22. 79 は 0 から 51 の範囲外なので、ハッシュ内のその 2 桁をスキップします。
  23. ハッシュの次の 2 桁 (92) を 16 進数から 10 進数に変換します。9*16 1 + 2*16 0 = 9*16 + 2*1 = 208 + 9 = 146。
  24. 最後のステップの末尾の 2 桁は 46 です。
  25. 46は0から51の範囲にあるので、カードにマッピングします。具体的には、46は8またはクラブにマッピングされます。これは左から3枚目のカードになります。
  26. ハッシュの次の 2 桁 (8b) を 16 進数から 10 進数に変換します。8*16 1 + 11*16 0 = 9*16 + 2*1 = 128 + 11 = 139。
  27. 最後のステップの末尾の 2 桁は 39 です。
  28. 39は0から51の範囲にあるので、カードにマッピングします。具体的には、39はクラブのエースにマッピングされます。これは左から4枚目のカードになります。
  29. ハッシュの次の 2 桁 (28) を 16 進数から 10 進数に変換します。2*16 1 + 8*16 0 = 2*16 + 8*1 = 32 + 8 = 40。
  30. 40は0から51の範囲にあるので、カードにマッピングします。具体的には、40はクラブの2にマッピングされます。これは配られたカードの最後のカード、右側になります。
  31. 3 枚のカードを捨てたので、ハッシュ内で次の 3 枚のユニークなカードを見つけて、それらを置き換える必要があります。
  32. ハッシュの次の2桁(43)を16進数から10進数に変換します。4*16 1 + 3*16 0 = 4*16 + 3*1 = 67。
  33. ハッシュの次の 2 桁 (1c) を 16 進数から 10 進数に変換します。1*16 1 + c*16 0 = 1*16 + 12*1 = 38。
  34. 38は0から51までの範囲にあり、唯一の数字なので、ダイヤの3にマッピングします。これは最初に配られるカードです。
  35. ハッシュの次の 2 桁 (2e) を 16 進数から 10 進数に変換します。2*16 1 + e*16 0 = 2*16 + 14*1 = 32 + 14 = 46。
  36. 46 もハッシュで既に見つかったため、これら 2 つの位置をスキップします。
  37. ハッシュの次の 2 桁 (e6) を取得し、16 進数から 10 進数に変換します。e*16 1 + 6*16 0 = 14*16 + 6*1 = 230。
  38. 最後のステップの末尾の 2 桁、つまり 30 を取得します。
  39. 30は0から51の範囲にあり、まだ見つかっていないので、カードにマッピングします。具体的には、30はダイヤの5にマッピングされます。これが2枚目の交換カードとなります。
  40. ハッシュの次の 2 桁 (88) を 16 進数から 10 進数に変換します。8*16 1 + 8*16 0 = 136。
  41. 最後のステップの末尾の 2 桁は 36 です。
  42. 36は0から51の範囲にあり、まだ見つかっていないので、カードにマッピングします。具体的には、36はダイヤのジャックにマッピングされます。これが3枚目の交換カードとなります。
  43. もうカードを探す必要はありません。手札は得点計算の準備ができており、プレイヤーは賞金を受け取ることができます。

要約すると、次の表は、ハッシュ、10 進数変換、およびカード変換 (存在する場合) から一度に 2 文字を示しています。

ハッシュからカードへの変換

ハッシュ
キャラクター
小数点
変換
右2
数字
遊ぶ
カード
3a 58 58または
95 49 49クラブのジャック
9b 155 55または
186 86または
ff 55 55または
d9 217 17ハートの5
b3 179 79または
92 146 46クラブの8
8b 139 39クラブのエース
28 40 40クラブの2
43 67 67または
1c 28 28ダイヤの3
2e 46 46 r/p/c
e6 230 30ダイヤの5
88 136 36ダイヤのジャック

鍵:
o/r = カードの10進数変換が範囲外です
r/p/c = 前のカードの繰り返し

公平な結果を得るために、ここまでの手順が面倒に思えるなら、朗報です!それを実行するスクリプトを書きました。PHP Sandboxに保存してあります。これは素晴らしいリソースです!使用するには、4行目にサーバー(カジノ)シード、5行目にクライアント(ご自身)シードを入力し、「コード実行」をクリックするだけです。あなたが受け取る運命のカードは、下の結果ボックスに表示されます。

万が一、コードに何か問題が発生した場合には、下のボタンをクリックしてコードを表示することができます。

このページでは、暗号技術を用いて配られるカードが事前に決定されるビデオポーカーのプレイ方法について解説します。ビデオポーカーの基本ルールがわからない場合は、私のビデオポーカーのメインページをご覧ください。

このページでは、Cypto.Games を取り上げます。Cypto.Games には、以下の3種類のビデオポーカーがあります。

  • ジャック以上
  • 10以上
  • ボーナスポーカー

プレイヤーは10クレジットを賭ける必要がありますが、仮想通貨の価値はプレイヤーが自由に決めることができます。私の意見では、10クレジットというステップは、不必要に状況を混乱させています。

次に、「コード実行」をクリックします。下の結果ボックスには、あなたが受け取ると予想されたカードと、賭けが行われる前に提供されたサーバーシードがハッシュ化されているという検証が表示されます。

以下にコードのコピーも示します。

[spoiler=ビデオポーカー公正賭博規則]PHP 1行目
       // Crypto.Games 向けビデオポーカーゲーム変換
        
$server_seed = "2XMpPAbEw3qdH3HQla2K5zNwoNEFHOEYolkB969j";
$client_seed = "bc7v9bn70d7n07sn";
$next_hash = "64e701539ecf4c03b90ecd957d6675b2f72c3fd84f04dc5eb63eed8b9a58b95b";
$rank_array=配列("A",2,3,4,5,6,7,8,9,10,"J","Q","K");
$suit_array=array("スペード","ハート","ダイヤモンド","クラブ");
$cards_found=0;
$位置=0;
$combined_seed = $server_seed.$client_seed;
echo "結合シード = $combined_seed\n";
$combined_hash = ハッシュ('sha512'、$combined_seed);
echo "結合されたシードのハッシュ = $combined_hash\n";
する
{
    $first_two=substr($combined_hash、$position、2);
    $hex_to_dec=hexdec($first_two)%100;
    ($hex_to_dec <=51) の場合
    {
        $繰り返し=0;
        ($cards_found>0) の場合
        {
            ($i=0; $i<$cards_found; $i++) の場合
            {
                if ( $hex_to_dec == $card_array[$i] ) 
                { $repeat=1; }
            }
        }
        ($repeat==0) の場合
        {
            $card_array[$cards_found] = $hex_to_dec;
            $game_position=1+($cards_found%5);
            $cards_found++;
            $rank=$hex_to_dec%13;
            $suit=intdiv($hex_to_dec,13)%4;
            ($cards_found<=5) の場合
            { echo "カードを配る $game_position =\t$rank_array[$rank] の $suit_array[$suit]\n"; }
            それ以外 
            { echo "$game_position =\t$rank_array[$rank]の$suit_array[$suit]のカードを引く\n"; }
        }
    }
    $位置+=2;
    ($position==128)の場合
    {
        echo "エラー -- ハッシュにスペースがありません。\n";
        $cards_found=10;
    }
}
$cards_found<10 の間;
$server_seed_hash = ハッシュ('sha256'、$server_seed);
($server_seed_hash==$next_hash) の場合
{ echo "サーバーシードが一致しました。\n"; }
それ以外
{   
    echo "サーバーシードが一致しません!\n";
    echo "サーバーシード =\t$server_seed\n";
    echo "サーバーシードハッシュ =\t$server_seed_hash\n";
    echo "次のハッシュとされるもの=\t$next_hash\n";
}

// 手順
// 1. 「位置」を 0 に移動します。 
// 2. サーバー、クライアント シード、サーバー シードをこの順序で結合します。 
// 3. 手順 2 の文字列の SHA-512 ハッシュを生成します。
// 4. 手順 3 のハッシュの「位置」から最初の 2 文字を 16 進数から 10 進数に変換します。
// 5. 4 から末尾の 2 桁を取得します。 
// 6. 手順 5 の結果が 51 以下で、まだ見つかっていない場合は、それが最初の 10 枚のカードのうちの 1 枚になります。   
// 7. 「position」を2増やします。
// 8. 10 枚のユニークなカードが見つかるまで、手順 4 ~ 7 を繰り返します。  
// 9. 最初に見つかった 5 枚のカードが、左から右の順に配られます。
// 10. 次の5枚のカードは、ドロー時に配られるキューに入れられます。例えば、プレイヤーが3枚のカードを引いた場合、キューの6枚目、7枚目、8枚目のカードを受け取ります。// 11 手順 6 のカードの位置を実際のカードに取得するには、次のようにします。 // A. 手順 4 の結果を 13 で割り、余りを取得します。 // B. 手順 11A の結果を次のようにマップしてランクを取得します。0 を A、1 を 2、2 を 3、...、9 を 10、10 を J、11 を Q、12 を K にします。 // C. 手順 4 の結果を 13 で割り、余りを DROP します。 // D. 手順 11C の結果を次のようにマップしてスーツを取得します。0 をスペード、1 をハート、2 をダイヤ、3 をクラブにします。 ?>
[/ネタバレ]