配列要素のシャッフル †一般的なList::Utilモジュールを利用する方法です。 関連ページ †ファイル名: shuffle.pl #!/usr/local/bin/perl -w # 実行コマンド perl shuffle.pl use strict; # ソースを厳密にチェック # use warnings; # 警告を出す # use List::Util; # リストに関するモジュール # # # my @races = ( 'Human', 'Amberite', 'Vampire', 'Half-Titan', # 種族リスト # 'Hobbit', 'Elf', 'Half-Elf', 'Dwarf','Gnome', 'Yeek', # # 'Dark-Elf', 'Zombie', 'Draconian', 'Mindflayer', 'Imp', # # 'Beastman', 'Half-Orc', 'Half-Troll', 'High Elf','Android', # # 'Half-Ogre', 'Cyclops', 'Klackon', 'Kobold', 'Nibelung', # # 'Golem', 'Skeleton', 'Spectre', 'Sprite', 'Half-Giant', # # 'Ent', 'Death Mold' ); # # # # my @classes = ( 'Warrier', 'Ranger', 'Warrier-Mage', 'Paladin', # 職業リスト # 'Blue Mage', 'Mindcrafter', 'Chaoss-Warrier', 'Mage', # # 'Priest', 'Monk', 'High Mage', 'Alchemist', 'Archer', # # 'Samurai', 'Axemaster', 'Bard', 'Demonologist', 'Druid', # # 'Geomancer', 'Haftedmaster', 'Loremaster', 'Mimic', # # 'Ninja', 'Tourist', 'Polearmmaster', 'Runecrafter', # # 'Sorceror', 'Summoner', 'Swordmaster', 'Symbiant', # # 'Thaumaturgist', 'Red Mage' ); # # # # my $m = 0; # 種族カウント用 # my $n = 0; # 職業カウント用 # my @mssids; # 作業用 # # # # シャッフル対象の配列を用意する # while( $m < 32 ) # ループ: 種族数 == 32 回分 # { # # while( $n < 32 ) # ループ: 職業数 == 32 回分 # { # # unshift( @mssids, ("$races[$m] $classes[$n],") ); # 配列の先頭に要素追加(push関数でもよい) # $n++; # 職業カウントアップ # } # # # # $n -= 32; # 職業カウントリセット # $m++; # 種族カウントアップ # } # # # # @mssids = List::Util::shuffle( @mssids ); # 配列要素のシャッフル # # # open (DECK, ">./deck_o.txt"); # 書き込みでファイルを開く # flock (DECK, 2); # 排他ロック(LOCK_EX == 2) # print (DECK @mssids); # ファイルにシャッフル結果を書き込む # close DECK; # ファイルクローズ # 参考までに(ファイル名: deck_o.txt) Golem Archer,Half-Elf Polearmmaster,Half-Giant Druid,Dwarf Polearmmaster,Dwarf Monk,Half-Orc Haftedmaster,...,以下改行なしで続く 参考ページ † |