カードのデッキをシャッフルします
質問
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
デッキをシャッフルする。
std :: random_shuffle
http://www.cplusplus.com/reference/algorithm/random_shuffle/
所属していません StackOverflow