人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

学校でのクラス内のグループ分けの方法に悩んでいます。
n人のクラスでm回の授業をします。毎回l組みのグループに分けますが、なるべく同じ人と同じグループにならないようにしたい。
この組み分けを、Excelもしくはvbaで自動生成したいと思っています。良い知恵があればお教えください。

●質問者: yagian
●カテゴリ:学習・教育 科学・統計資料
✍キーワード:Excel VBA クラス グループ 学校
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Hyperion64
●100ポイント ベストアンサー

確かに難しい問題なので、どなたも回答されてないようなので、やや不完全ですが道筋(アルゴリズム)を説明します。

はじめに、n=6でl=3のケースで説明します。

1)6の分割数のケースをだします(p(6)=11通りあります)

6,5+1,4+2,4+1+1,3+3,3+2+1,3+1+1+1,2+2+2,2+2+1+1,2+1+1+1+1,

1+1+1+1+1+1

2)上記ケースでl=3組に分かれたケースを選別します

4+1+1,3+2+1,3+1+1+1,2+2+2

3)すべての要素が[6/3]=2以上からなるケースを選別します。

[]はガウス記号です。これは「なるべく同じ人数」を満たす条件です。

2+2+2

4)6人を2,2,2に分ける組み合わせを計算します

6C4*4C2*2C2=6!/(4!2!)×4!/(2!2!)×2!/(2!0!)=30

m回が30以下であれば、毎回異なるペアを作れます。具体的なメンバーの対は集合演算すれば生成できるでしょう。また、mが30より大であるとメンバが同じグループが出来てしまうのは不可避です。



これをより一般的に表現すると

1)nの分割をリストアップする(自然数の分割に従う)

2)l個に組み分けされた分割ケースを抽出します(l個の要素の分割を選ぶ)

3)上記分割で[n/l]以上の要素からなるケースを選別します。仮に(a,b,c,d...)とします

4)n人を(a,b,c,d...)に分ける組み合わせ数を出します(組み合わせ数を計算する必要は必ずしも無いですが、m回以上かどうかのチェックにはなります)

5)組み合わせを作成します

Excel実装は該当する関数がないので苦しいです。とくに自然数の分割パターンは自分でVBAプログラムする必要があります。下記サイトの問題93が参考になるでしょう。

http://www.geocities.jp/m_hiroi/func/yasp06.html

その他参考

自然数の分割

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ