公平的席位分配MATLAB编程(Q值法)
**例题:**某学校有3个系,共200名学生,甲系103人,乙系63人,丙系34人,分别使用比例加惯例方法,Q值法分配21个席位。
程序如下:
clc
p=[103 64 34];
ps=sum§;
N=21;
n=[0,0,0];
for i=1:3
n(i)=floor(p(i)/psN);
end
Q=[0,0,0];
for j=1:3
Q(j)=p(j)^2/(n(j)(n(j)+1));
end
ns=sum(n)
if N-ns>0
for t=1:(N-ns)
s=find(Q==max(Q));
n(s)=n(s)+1;
Q(s)=p(s)^2/(n(s)*(n(s)+1));
end
end
n
得到结果: