カードを混ぜる

カードを混ぜる

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;
    }
  }
}
  • トランプ・ポーカー ポーカー初心者のためのポーカー必勝法
  • トランプ・ブラックジャック ブラックジャックゲーム必勝法
  • ギャンブルから株式為替まで役立つ資金管理 株投資・株式投資のマネー・マネジメント
  • 株式投資や為替取引のリスクマネジメント 個人投資家にも誤発注は起きる
  • カード被害が預金者保護法で補償された体験 クレジットカードやキャッシュカードの紛失偽造盗難と預金者保護法
  • アニメで英会話/台詞逆輸入 逆輸入アニメで英会話を
  • 右脳と左脳を鍛える開発トレーニング 脳トレで右脳と左脳を鍛える