Perlで配列の要素をシャッフルする
開発環境はWindows 7 Professional(32bit)+Perl 5.24.0。
配列の要素をシャッフルした配列を返すプログラムを作ります。
今回は、各要素をトランプに見立てて、53個用意して、それをシャッフルするプログラムにします。
use strict; use warnings; my @trump = ( "h1","h2","h3","h4","h5","h6","h7","h8","h9","h10","h11","h12","h13", "d1","d2","d3","d4","d5","d6","d7","d8","d9","d10","d11","d12","d13", "c1","c2","c3","c4","c5","c6","c7","c8","c9","c10","c11","c12","c13", "s1","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13", "joker" ); my @trump2 = (); my $t = 0; for(my $i = 0; $i < @trump; $i++){ # 乱数で要素数を出す $t = int(rand(@trump)); # 指定の要素を新しい配列に追加する push(@trump2,$trump[$t]); # 要素を抜き出した要素を削除する splice(@trump,$t,1); } my $count = 1; # シャッフルした結果を表示 for(@trump2){ print $count.":".$_."\n"; $count++; }