2017-10-21 3 views
-1

オンラインブラックジャックゲームではどのようなシャッフル方法が使用されますか?彼らはコードでのカード表現の "デッキ"を保持しているのでしょうか、あるいは単純に各手を無作為に一組のカードから完全に新しいものとして扱いますか?オンラインブラックジャックゲームはどのようにカードをシャッフルしますか?

+1

まあ、それは、それぞれの手が完全に新しいものである場合にはブラックジャックではありませんので、シミュレートされた「靴があるように持っています"デッキの"。これは、シミュレートされた実装方法の詳細です。最も自然なことは、Fisher-Yatesのシャッフルを前もって行うことですが、これはちょうど投機的なものであり、それゆえに意見に基づくものであり、広すぎるものです。これは興味深い質問ですが、私はそれが本当にトピックではないと思います。さらに、あなたの質問は、すべてのサイトが同じ方法を使用していると思われるようです。なぜそれは本当であるべきですか? –

+0

あなたはそれを求めることはしませんでしたが、私は言います:彼らは(1)外部エントロピー(物理的測定;おそらくサイト関連のタイミング/ユーザー行動ではありませんが、後者は単独で使用します)(2)cryptoPRNGs - 残りはゲームに依存します。シャッフルが必要な場合、Fisher-Yatesは素晴らしいです(いくつかのランダムなビットが与えられています)。 – sascha

+0

*正しく*行う人は、配列を持つカードでいっぱいのデッキやシューを適切にシミュレートし、240ビット以上の状態の良いRNGを使用し、靴のサイズに対して均一にするために削減サンプリングを使用し、 Fisher-Yatesは、実際のカジノの練習を適切にシミュレートするために残っているカードの約15%が残っているときに再編します。私は、ソフトウェアブラックジャックゲームの10%以下しかそれをすべて正しく行っているとは思えません。 –

答えて

0

これは、ゲームの製造元と使用するプログラミング言語の種類によって大きく異なります。あなたがカードオブジェクトの新しいデッキを作成するたびにそれを想像してください。この場合でも、それらをシャッフルする必要があります。グッドシャッフルアルゴリズムは非常に重要であり、メーカーは十分に熟練している場合、それはthis oneのようなアルゴリズムを使用します。

var rand = new Random(); 
for (int i = cards.Length - 1; i > 0; i--) { 
    int n = rand.Next(i + 1); 
    int temp = cards[i]; 
    cards[i] = cards[n]; 
    cards[n] = temp; 
} 
関連する問題