公平的席位分配(参照惯例的席位分配方法)
生活随笔
收集整理的這篇文章主要介紹了
公平的席位分配(参照惯例的席位分配方法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????????n 為席位總數,p1,p2,…,pm 為各單位人數。
????????步驟:
???????? a. 按比例各單位所得席位為 n*pi/(p1+p2+,…,pm),i=1,2,…,m(結果可能含有小 數)。
????????b. 對各單位所得席位取整。
????????c. 若對各單位所得席位取整數之和<0,說明席位未分完。將(1)中各數的小數部分按 從大到小排序,把剩余的席位順序分出去(每個單位至多分 1 個席位)。
???????? 某學校有甲乙丙三個系共有 200 名學生,其中甲系有 103 人,乙系有 63 人,丙系有 34 人。
????????1. 有 20 個代表席位,采用參照慣例的席位分配方法,分別求出甲乙丙系的“席位分 配結果”和“求解過程”。
???????? 2. 有 21 個代表席位,采用參照慣例的席位分配方法,分別求出甲乙丙系的“席位分 配結果”和“求解過程”。
???????? 下面是參照慣例的席位分配方法的求解函數:
%輸入:p為各單位人數(行向量),n為總席位(標量) %輸出:ni為各單位所得席位,c為求解過程(矩陣) %文件名:fapt1.m function [ni,c]=fapt1(p,n) temp=p*n/sum(p); %按比例各單位所得席位(可能含小數) ni=fix(temp); %各單位所得席位取整 c=ni; if sum(ni)<n %席位沒分完,temp中存在小數部分不為0c=[temp;ni]; %拼接temp=temp-ni; %取小數部分[d,k]=sort(temp,'descend');%按降序排序(缺省為升序)i=1;while sum(ni)<nni(k(i))=ni(k(i))+1;i=i+1;endc=[c;ni]; %拼接 end1. 在命令窗口分別調用以上函數求解(使用最佳定點或浮點格式(5 位數字)控制 命令 format short g)。
2. 兩個結果比較,合理嗎?
?
不合理
總結
以上是生活随笔為你收集整理的公平的席位分配(参照惯例的席位分配方法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GSM 劫持短信验证码盗刷引关注:手机处
- 下一篇: 【计算机毕业设计】522租房网站