チーム分けアルゴリズム
どうすりゃいいんでしょうか。いくつか考えてみる。
問題
- N人のプレイヤーがN/2人ずつ2チームに分かれる
- それぞれのプレイヤーはランクR(数値)を持っている
- なるべく2チームのランク合計それぞれS1とS2を近い値にする
解答
その1:ドラフト形式
今現在使われている方法。手順を次に示す。
- まずN人の中からランクが一番高い2人を選出
- 2人をそれぞれのチームのリーダーとする
- 残りのメンバーで一番ランクの高い1人を選び、S1とS2のうち低い方のチームにその人を入れる(残りメンバーが居なければ終了)
- 残りメンバーが1人になるまで、残りメンバーから一番ランクの高い2人を選出し、人数の少ない方に入れる
- 残りメンバーが1人になったらメンバーが少ないチームにその人を入れる
例:
メンバー
手順1.
残り
↓
手順3.
残り
↓
手順4.
残り
↓
手順4ループ.
		| Team1 | 9 | 8 | 7 | 6 | 6 | 
		| Team2 | 8 | 8 | 7 | 7 |  | 
残り
↓
手順5.
		| Team1 | 9 | 8 | 7 | 6 | 6 | 計36 | 
		| Team2 | 8 | 8 | 7 | 7 | 1 | 計31 | 
残り
メリット:
デメリット:
- 平均値から大きくずれる場合がある(特にランクが他のメンバーより極端に差がある人が奇数人数居る場合→つまり例の場合)
最終更新:2008年06月30日 20:03