gusucode.com > 《matlab在数学建模中的应用》一书 所有的 源代码 > 第10章/P10-1/calculate_probability.m
function p_temp_sub = calculate_probability(m,n,type); %n选m时各奖项的获奖概率 % type代表当前求解的彩票类型 % K1型是固定概率,无需在这里计算 if (type == 2) % K2型的 p_temp_sub=zeros(7,1); p_temp_sub(1)=1/mmmcomb(n,m); p_temp_sub(2)=mmmcomb(m,m-1)./mmmcomb(n,m); p_temp_sub(3)=mmmcomb(m,m-1).*mmmcomb(n-m-1,1)./mmmcomb(n,m); p_temp_sub(4)=mmmcomb(m,m-2).*mmmcomb(n-m-1,1)./mmmcomb(n,m); p_temp_sub(5)=mmmcomb(m,m-2).*mmmcomb(n-m-1,2)./mmmcomb(n,m); p_temp_sub(6)=mmmcomb(m,m-3).*mmmcomb(n-m-1,2)./mmmcomb(n,m); p_temp_sub(7)=mmmcomb(m,m-3).*mmmcomb(n-m-1,3)./mmmcomb(n,m); elseif (type == 3) % K3型的 p_temp_sub=zeros(7,1); p_temp_sub(1)=1./mmmcomb(n,m+1); p_temp_sub(2)=mmmcomb(n-m-1,1)./mmmcomb(n,m+1); p_temp_sub(3)=mmmcomb(m,m-1).*mmmcomb(n-m-1,1)./mmmcomb(n,m+1); p_temp_sub(4)=mmmcomb(m,m-1).*mmmcomb(n-m-1,2)./mmmcomb(n,m+1); p_temp_sub(5)=mmmcomb(m,m-2).*mmmcomb(n-m-1,2)./mmmcomb(n,m+1); p_temp_sub(6)=mmmcomb(m,m-2).*mmmcomb(n-m-1,3)./mmmcomb(n,m+1); p_temp_sub(7)=mmmcomb(m,m-3).*mmmcomb(n-m-1,3)./mmmcomb(n,m+1); elseif (type == 4) % K4型的 p_temp_sub=zeros(7,1); p_temp_sub(1)=1./mmmcomb(n,m); p_temp_sub(2)=mmmcomb(m,m-1).*mmmcomb(n-m,1)./mmmcomb(n,m); p_temp_sub(3)=mmmcomb(m,m-2).*mmmcomb(n-m,2)./mmmcomb(n,m); p_temp_sub(4)=mmmcomb(m,m-3).*mmmcomb(n-m,3)./mmmcomb(n,m); p_temp_sub(5)=mmmcomb(m,m-4).*mmmcomb(n-m,4)./mmmcomb(n,m); p_temp_sub(6)=0; p_temp_sub(7)=0; else error('Error in calculate_probability!'); end function combi = mmmcomb(n,m) %求从n个数中取出m个数的组合数 if (isscalar(n)) && (isscalar(m)) &&... (isreal(n)) && (isreal(m)) && (n>=m) && (m>0) combi=factorial(n)./factorial(m)./factorial(n-m); else error('A mistake occurs when calculating combinations.') end