[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAでチーム分け』(モナー)
【やりたいこと】
受験生50人を次の通りチーム分けしたいです。
チーム分け1回目:5人10チームをつくります。(これはランダムでOK)
チーム分け2回目:10人5チームをつくります。
問題は2回目のチーム分けです。
「1回目のチーム分けで同じチームになった人を避けて」、2回目のチーム分けを行いたいのですが、どんな考え方をすれば実現できそうでしょうか。
メジャーなアルゴリズムがあるのでしょうか。
< 使用 Excel:Office365、使用 OS:unknown >
最初に5人を10チームにわけるのができていれば、
最初の1チームの5人を5チームに分けることだってできるはず それを10チーム分繰り返せば完了 (てくてく) 2020/07/30(木) 22:46
あ、それをVBAで作って欲しいということなのかな。
VBAでなくても一般機能で十分では?
50人を縦に並べ、横の列に=RAND()で乱数を入れ
乱数列を基準としてソートすれば、シャッフルできます。
あとは、それを5×10のセル範囲に入れるだけですね。
(γ) 2020/07/31(金) 11:16
後だしになり恐縮ですが、
50人のところが20人だったり25人だったり
グループ人数が5人だったり3人だったり色々なケースが発生します。
でも考え方はそれでいけそうな気がします。
本当に有難うございます。
1つ興味本位ですが、受験生200人を
1回目:4人50チーム
2回目:5人40チーム
3回目:8人25チーム
のチーム分けで、2回目、3回目は同じメンバーになったことのある人を避ける
みたいなアルゴリズムってあるんでしょうか。
(モナー) 2020/07/31(金) 19:19
>でも考え方はそれでいけそうな気がします。 >同じメンバーになったことのある人を避けるみたいなアルゴリズムってあるんでしょうか。 だったら自分で考えたらどうでっか。 (CC) 2020/07/31(金) 20:53
>1つ興味本位ですが、 ということで、こちらもパズル風に考えました。
対象者に番号を振り、それぞれのグループ構成を 以下の表のようにしたらどうですか?
(1)4人×50 1 5 9 13 17 21 25 29 33 これより右は同左 2 6 10 14 18 22 26 30 34 3 7 11 15 19 23 27 31 35 4 8 12 16 20 24 28 32 36
(1)5人×40 1 6 11 16 21 26 31 36 41 同左 197 2 7 12 17 22 27 32 37 193 198 3 8 13 18 23 28 33 189 194 199 4 9 14 19 24 29 185 190 195 200 5 10 15 20 25
(3)8人×25 1 9 17 25 33 41 49 57 65 同左 194 2 10 18 26 34 42 50 58 187 195 3 11 19 27 35 43 51 180 188 196 4 12 20 28 36 44 173 181 189 197 5 13 21 29 37 166 174 182 190 198 6 14 22 30 159 167 175 183 191 199 7 15 23 152 160 168 176 184 192 200 8 16
こうすれば、番号の差は(1)が1〜3、(2)が4の倍数、(3)が7の倍数なので、 特定の二人が、2回、同一グループに属することは無い。
受験生200人にどの連番を割り当てるかのところにランダム性を入れれば、 不公平は生じないのではないかと思います。
(γ) 2020/07/31(金) 22:43
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.