経済学の勉強と英語を最近やっています。さて、Randomed-Team-Making-System(略してRTMS)の開発に取り掛かりましょう。流れは以下。

入力する値:総人数(26人)、分けたいチーム数(5チーム)

メソッド1:1チームのMaxの人数を返すメソッド。

例えば26人を5チームに分けたいとき、26÷5=5あまり1だから1チームの上限は5もしくは6。各チームにはランダムに人が入ってくるから、6人となるのはチーム1でよい。つまり、入力(26、5)に対して、(6,5,5,5,5)を返すようなメソッドが欲しい。配列を使うとうまくいきそう。商をPあまりをQと置いて、まず、配列max[i]に全てQを代入しておき、後は以下のようにすれば、出切るだろう。

while(p>0){
for(i){max[i]=max[i]+1;
p=p-1}
}

メソッド2:ランダム変数を用いて、1チームの最大人数の制約を満たしながら、各プレイヤーをチーム1〜チーム5へ振り分けていく。int rand()*5+1 で1〜5までランダムに数字が出るから、配列player[j]にランダムに1〜5までを入れていく。その際、制約条件をうまく使うために、事前のチェックシステムを構築しようとすると、ランダム数を減らす(1〜4とか)作業が必要になりそうなので、事後処理システムを考える。各チームに人が入るたびにcount[k]=++で入った人数を保存しておく。そして

if(count[k]>max[k]){
player[k] = player[k]+1
//要するに1チーム繰上げる。
//チーム5→チーム1の例外処理が必要。
//全て埋まったときの終了メソッドも必要。
}

メソッド3:表示するメソッド

player[0]=1
player[1]=3
player[2]=3
player[3]=1
player[4]=4・・・のようになるから、これをチーム別に並べて、

チーム1は、プレイヤー0、3、12、15、22、16
チーム2は、・・・・

という風に表記すればよい。誰かやろーよー。