質問

C ++プログラムのデッキクラスを作成しています。 2つの方法が必要です。1つはデッキの上部からカードをポップし、もう1つはデッキをシャッフルするためです。私は後者に関心があります。

カードは、整数1〜52包括的として表されます。デッキをシャッフルするための最速のアルゴリズムは何ですか(「良い」レベルのランダム性を想定しています)?

役に立ちましたか?

解決

Shuffle Yourselfを実装したい場合は、非常に単純であるが機能的なシャッフルアルゴリズムでもあります。 フィッシャー - あなたはシャッフルをします.

n要素の配列aをシャッフルするには:

for i from n − 1 downto 1 do
   j ← random integer with 0 ≤ j ≤ i
   exchange a[j] and a[i]

もちろん、C ++標準ライブラリには、このようなものがあなたのために実装されています。 std::random_shuffle, 、に含まれています <algorithm> ヘッダ。

他のヒント

使用する std::random_shuffle デッキをシャッフルする。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top