チーム分けアルゴリズム

どうすりゃいいんでしょうか。いくつか考えてみる。

問題

  1. N人のプレイヤーがN/2人ずつ2チームに分かれる
  2. それぞれのプレイヤーはランクR(数値)を持っている
  3. なるべく2チームのランク合計それぞれS1とS2を近い値にする

解答

その1:ドラフト形式

今現在使われている方法。手順を次に示す。

  1. まずN人の中からランクが一番高い2人を選出
  2. 2人をそれぞれのチームのリーダーとする
  3. 残りのメンバーで一番ランクの高い1人を選び、S1とS2のうち低い方のチームにその人を入れる(残りメンバーが居なければ終了)
  4. 残りメンバーが1人になるまで、残りメンバーから一番ランクの高い2人を選出し、人数の少ない方に入れる
  5. 残りメンバーが1人になったらメンバーが少ないチームにその人を入れる

例:
メンバー
9 8 8 8 7 7 7 6 6 1

手順1.
Team1 9
Team2 8
残り
8 8 7 7 7 6 6 1

手順3.
Team1 9
Team2 8 8
残り
8 7 7 7 6 6 1

手順4.
Team1 9 8 7
Team2 8 8
残り
7 7 6 6 1

手順4ループ.
Team1 9 8 7 6 6
Team2 8 8 7 7
残り
1

手順5.
Team1 9 8 7 6 6 計36
Team2 8 8 7 7 1 計31
残り
なし

メリット:
  • アルゴリズムが簡単でそれっぽいチーム分けになる
デメリット:
  • 平均値から大きくずれる場合がある(特にランクが他のメンバーより極端に差がある人が奇数人数居る場合→つまり例の場合)

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年06月30日 20:03