在Excel中创建随机实验室合作伙伴矩阵

时间:2014-11-16 21:41:53

标签: excel excel-formula

我想使用Excel生成随机实验室合作伙伴列表,而不使用VB(由于PC上的安全设置)。

参数如下:

学生人数:10-30,每个所需总数一张工作表 合作伙伴数量:前两个实验室中有三个,另外四个中有两个。 实验室站数:10 重复:理想情况下没有,但允许学生从前两个实验室中的一个获得重复伴侣。 Excel版本:2007

为了澄清,每个学生将有两个实验室,他们与另外两名学生共用一个实验室,实验室最大为30名学生。之后,他们将严格限制在每个站两名学生,最多20名学生。每个学生将有四个这样的有限实验室,总共有五个这样的实验室,允许奇数编号的班级,或21-30岁的班级。

每个学生的编号都是1-30,所以一个单元可以,例如,状态" 5,24"作为该实验室的两名学生。

真正的RNG并不重要,事实上,只需执行一次即可制作这些矩阵。

1 个答案:

答案 0 :(得分:0)

我认为在不使用VBA的情况下这有点棘手,但这里有一种方法可以适用于小组。我尝试使用一组只有九个,以便屏幕截图可读。

该方法是基本的Fisher-Yates

A Start with a group of students size n represented by a list of numbers 1 to n.

B Generate a random number r in range 1 to n

C Pick the rth element from the list

D Remove the rth element from the list

E Reduce n by 1

F Repeat from B until n=1.

在Excel中: -

填充A2:A10和D2:L2,编号为1-9

将以下内容放入B2并下拉: -

=RANDBETWEEN(1,10-A2)

将其放入C2并下拉: -

=OFFSET(D2,0,B2-1)

将它放在D3中并向下拉: -

=IF(D2>=$C2,E2,D2)

ID将在C列中,因此前三个将在第1组中,后三个在第2组中等。

enter image description here

顺便说一下,你的问题是生成非重复随机数的一个特例 - 见

Generating unique random numbers without VBA

此处描述的数组公式只需一步即可完成 - 对此问题略有修改,看起来像

=SMALL(IF(COUNTIF(C$1:C1,ROW(INDIRECT("1:9")))=0,ROW(INDIRECT("1:9"))),RANDBETWEEN(1,(9-ROWS(C$2:C2)+1)))