クラスの生徒にランダムな論文を割り当てる必要がありますが、次のような制約があります。
- 各学生は2つの論文を割り当てる必要があります。
- 各論文は(ほぼ)同数の学生に割り当てられる必要があります。
このプロパティを持つ行列を生成するエレガントな方法はありますか?つまり、シャッフルされますが、行と列の合計は一定ですか?例として:
Student A 1 0 0 1 1 0 | 3
Student B 1 0 1 0 0 1 | 3
Student C 0 1 1 0 1 0 | 3
Student D 0 1 0 1 0 1 | 3
----------------
2 2 2 2 2 2
最初に正しい行/列の合計で「初期行列」を作成し、次に最初に行、次に列をランダムに並べ替えることを考えましたが、この初期行列を生成するにはどうすればよいですか?ここでの問題は、(たとえば)次の選択肢から選択することです。同じペアの論文が割り当てられている2人の学生がいるという事実(左側の設定)は、行/列のシャッフルによって変更されません。
INITIAL (MA): OR (MB):
A 1 1 1 0 0 0 || 1 1 1 0 0 0
B 1 1 1 0 0 0 || 0 1 1 1 0 0
C 0 0 0 1 1 1 || 0 0 0 1 1 1
D 0 0 0 1 1 1 || 1 0 0 0 1 1
私は何か迅速で汚いものを思い付くことができ、必要に応じて微調整することができることを知っていますが、それは楽しい運動のように思えました。