カードを混ぜる
shuffle は、1 組 52 枚のカードを混ぜるサブルーチンです。
rand 関数か List::Util モジュールの shuffle 関数を利用して、1 組のカードを混ぜています。
#カードを混ぜる
sub shuffle(\@) {
my ($stack) = @_;
if ($] >= 5.008) {#特殊変数 $] は、Perl のバージョンを識別する文字列
use List::Util;
@$stack = List::Util::shuffle(0 .. IMAX * NDECK - 1);
} else {
my (@flag);#フラグ(0:未使用 1: 使用済)
#配列を初期化する
for (0 .. IMAX * NDECK - 1) {
$flag[$_] = 0;
}
#擬似乱数を初期化する
srand:
#カードを混ぜる
for (0 .. IMAX * NDECK - 1) {
my ($index);#カード番号
#未使用カードを探す
while (1) {
#rand の引数に数値 X を指定→0 以上 X 未満の小数を返す
#rand の引数を省略 →0 以上 1 未満の小数を返す
$index = int(rand(IMAX * NDECK));
last if (!$flag[$index]);
}
#カードを設定する
$$stack[$_] = $index;
#フラグを使用済にする
$flag[$index] = 1;
}
}
}
- トランプ・ポーカー
- トランプ・ブラックジャック
- ギャンブルから株式為替まで役立つ資金管理
- 株式投資や為替取引のリスクマネジメント
- カード被害が預金者保護法で補償された体験
- アニメで英会話/台詞逆輸入
- 右脳と左脳を鍛える開発トレーニング