みかんと申します。
どなたかご教授お願いします。
トランプなどのカードをシャッフルする為に1〜52までの数値を
ランダムに並び替えたいのですが、どのような関数を使用した
ら良いでしょうか?
rand関数だと、1つの乱数しか求められないので・・・。
よろしくお願いいたします。
> ランダムに並び替えたいのですが、どのような関数を使用した
> ら良いでしょうか?
そのような関数は無いのではないでしょうか?
アルゴリズム(rand関数を使って)を考えるしかないと思いますよ。
std::random_shuffle
を使えばOK。1〜52の値の入ったコンテナなり配列なりは自分で用意して下さい。
#define CARDS 52
int temp,i,swap;
for(i=0; i < CARDS; ++i) {
swap = rand() % CARDS;
temp = cards[i];
cards[i] = cards[swap];
cards[swap] = temp;
}
YuOさん、KTさんサンプルありがとうございます。
KTさんのほうが簡単なので、試してみたところ
2回程処理を繰り返すと、ばっちりシャッフル
できました。
ありがとう御座いました。
ツイート | ![]() |