W杯 抽選シミュレーション

というわけで、ついに出場国が確定しました。日韓W杯方式だといかのように振り分けられるようです。

まずシード8カ国を選出。開催国のほか過去W杯3大会の成績、最近3年間のFIFAランキングを数値化したものからから7カ国を決定。この計算から「ドイツ、スペイン、イングランド、イタリア、フランス、ブラジル、アルゼンチン、メキシコ」が確実。強豪のオランダ、チェコポルトガルはシードされない見通し。
 その他はシード国以外の「欧州」「アジア&北中米カリブ海」「南米&アフリカ&オセアニア」と大陸別に3枠に分類。原則的には各枠から1カ国ずつを抽選で選んでいき、A−Hの8組に振り分けていく。日本は同じアジア、メキシコ以外の北中米カリブ海と1次リーグで同組にならない。
http://www.sanspo.com/soccer/top/st200511/st2005111801.html

というわけでこんな感じ。

第1ポット(ドイツ、ブラジル、スペイン、メキシコ、イングランド、アルゼンチン、イタリア、フランス)

第2ポット(チェコ、オランダ、ポルトガルスウェーデン、スイス、クロアチアポーランドウクライナセルビア・モンテネグロ

第3ポット(アメリカ、コスタリカトリニダード・トバゴ、日本、イラン、韓国、サウジアラビア

第4ポット(トーゴ、ガーナ、コートジボワールアンゴラチュニジアエクアドルパラグアイ、オーストラリア)

日本の憂鬱な現状は横において、いろいろ想像したくなる。
シード国で、最弱はおそらくメキシコだろうけど、むしろ取りこぼしの多いスペインのほうがくみし易いかも。第2ポットは、ポーランド、第4ポットはアンゴラ*1がねらい目。
id:souno418:20051118で、VBSで作った抽選シミュレーションなるものが載っていたので、早速Rubyに移植。

#!/usr/bin/ruby

# pot定義
$pot1 = ["ドイツ", "ブラジル", "スペイン" , "メキシコ" ,"イングランド" ,
 "アルゼンチン" ,"イタリア", "フランス"]
$pot2 = ["チェコ" , "オランダ" , "ポルトガル" , "スウェーデン" , "スイス" ,
 "クロアチア" , "ポーランド" , "ウクライナ" , "セルビア・モンテネグロ"] 
$pot3 = ["アメリカ" , "コスタリカ" , "トリニダード・ドバコ" , "日本" ,
 "イラン" , "韓国" , "サウジアラビア"]
$pot4 = ["トーゴ" , "ガーナ" , "コートジボワール" , "アンゴラ" , "チュニジア" ,
  "エクアドル" , "パラグアイ" , "オーストラリア" ]
SWAP_CNT = 50	# ぐちゃぐちゃ(swap)する回数

# 指定されたArrayを乱数でぐちゃぐちゃにする
def swaparray( array )
  target = array.dup
  
  SWAP_CNT.times do
    i = rand( array.size )
    tmp = target.slice!(i)
    target.push(tmp)
  end
  
  target
end

srand()
swapped1 = swaparray( $pot1 )
swapped2 = swaparray( $pot2 )

# pot2の最後のやつはpot3に回る
$pot3.push( swapped2.pop )
swapped3 = swaparray( $pot3 )
swapped4 = swaparray( $pot4 )

groupName = 'A'
8.times do |i|
  printf( "Group%s : %-15s %-15s %-15s %-15s\n", groupName, swapped1[i], swapped2[i], swapped3[i], swapped4[i] )
  groupName.next!
end

もとのスクリプトのswaparyサブルーチンが何をしたいのかいまいち良くわからんが、たんに配列をぐちゃぐちゃにするだけと勝手に判断して実装。使い方を説明しないと実行できない人は、使用禁止です(笑)。本当は、抽選手順も厳密にシミュレートしたものを作りたかったが、それは今後の課題ということで。

で、実行結果は

GroupA : ブラジル        ポーランド      ウクライナ      ガーナ
GroupB : フランス        スイス          日本            オーストラリア
GroupC : スペイン        チェコ          コスタリカ      エクアドル
GroupD : ドイツ          クロアチア      トリニダード・ドバコ チュニジア
GroupE : メキシコ        ポルトガル      サウジアラビア  トーゴ
GroupF : アルゼンチン    スウェーデン    韓国            パラグアイ
GroupG : イングランド    セルビア・モンテネグロ イラン          アンゴラ
GroupH : イタリア        オランダ        アメリカ        コートジボワール

うーん、斜陽のフランス(FWは超強力だけど)はともかく、スイス、オーストラリアとは曲者だな。しかし、トーナメント進出の望みはあるかも。
死のグループは、イタリア、オランダと、曲者アメリカ、ドロクバを擁するコートジボワールが入ったGroupHかな。2000 Euroでのイタリア-オランダの死闘の再現なるか?

*1:本番はさすがにこのまえの親善試合みたいなこともないだろうけど