チーム分けアルゴリズム
どうすりゃいいんでしょうか。いくつか考えてみる。
問題
- 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