博饼规则
此文章将遍地锦、六杯黑合称“六子”,六杯红简称“六红”,五子登科简称“五子”。
且符合多个条件的结果按照更高条件计算(如四进带一秀算作四进不算一秀)。
预备知识
排列
我们设 AnmA_n^mAnm 表示从 nnn 个数中选出 mmm 个数的方案数(不同顺序记作不同方案)。
则第 111 次有 nnn 种选择,第 222 次有 n−1n-1n−1 种选择,……,第 mmm 次有 n−m+1n-m+1n−m+1 种选择。
因此 Anm=n!(n−m)!A_n^m=\dfrac{n!}{(n-m)!}Anm=(n−m)!n!。
组合
若设 CnmC_n^mCnm 表示从 nnn 个数中选出 mmm 个数的方案数(不同顺序记作同一方案)。
对于同一方案,一共有 Amm=m!A_m^m=m!Amm=m! 种顺序。
因此 Cnm=AnmAmm=n!(n−m)!m!C_n^m=\dfrac{A_n^m}{A_m^m}=\dfrac{n!}{(n-m)!m!}Cnm=AmmAnm=(n−m)!m!n!。
计算过程
状元插金花
222 个 111 排在不同位置共有 C62=15C_6^2=15C62=15 种方案。
因此 P(状元插金花)=1566=1546656=515552≈0.032%P(状元插金花)=\dfrac{15}{6^6}=\dfrac{15}{46656}=\dfrac{5}{15552}\approx0.032\%P(状元插金花)=6615=4665615=155525≈0.032%。
六红
只有 111 种方案。
因此 P(六红)=166=146656≈0.002%P(六红)=\dfrac{1}{6^6}=\dfrac{1}{46656}\approx0.002\%P(六红)=661=466561≈0.002%。
六子
555 种方案,即都为 1,2,3,5,61,2,3,5,61,2,3,5,6。
因此 P(六子)=566=1546656≈0.010%P(六子)=\dfrac{5}{6^6}=\dfrac{15}{46656}\approx0.010\%P(六子)=665=4665615≈0.010%。
五红
不为 444 的那一位有 555 种填法,同时有 666 种顺序。
因此 P(五红)=5×666=3046656=57776≈0.064%P(五红)=\dfrac{5\times6}{6^6}=\dfrac{30}{46656}=\dfrac{5}{7776}\approx0.064\%P(五红)=665×6=4665630=77765≈0.064%。
五子
相同的有 555 种填法,不同的那一位也有 555 种填法。
共有 666 种顺序。
因此 P(五子)=5×5×666=15046656=257776≈0.322%P(五子)=\dfrac{5\times5\times6}{6^6}=\dfrac{150}{46656}=\dfrac{25}{7776}\approx0.322\%P(五子)=665×5×6=46656150=777625≈0.322%。
普通状元(四红)
有 525^252 种填法,C62=15C_6^2=15C62=15 种顺序。
但同时要减去状元插金花的情况。
因此 P(普通状元)=52×666−515552=36046656=5648≈0.772%P(普通状元)=\dfrac{5^2\times6}{6^6}-\dfrac{5}{15552}=\dfrac{360}{46656}=\dfrac{5}{648}\approx0.772\%P(普通状元)=6652×6−155525=46656360=6485≈0.772%。
对堂
依次考虑每个数。
111 有 666 个空位可选,222 有 555 个空位可选,333 有 444 个空位可选,444 有 333 个空位可选,555 有 222 个空位可选,666 有 111 个空位可选,共 6!=706!=706!=70 种(或 A66A_6^6A66 种)。
因此 P(对堂)=72066=72046656=5324≈1.54%P(对堂)=\dfrac{720}{6^6}=\dfrac{720}{46656}=\dfrac{5}{324}\approx1.54\%P(对堂)=66720=46656720=3245≈1.54%。
三红
剩余的 333 个数有 535^353 种填法,且有 C63=20C_6^3=20C63=20 种顺序。
因此 P(三红)=53×2066=250046656=62511664≈5.36%P(三红)=\dfrac{5^3\times20}{6^6}=\dfrac{2500}{46656}=\dfrac{625}{11664}\approx5.36\%P(三红)=6653×20=466562500=11664625≈5.36%。
四进
相同的 444 个数有 555 种填法,剩余的 222 个数有 525^252 种填法,且有 C62=15C_6^2=15C62=15 种顺序。
因此 P(四进)=5×52×1566=187546656=62515552≈4.02%P(四进)=\dfrac{5\times5^2\times15}{6^6}=\dfrac{1875}{46656}=\dfrac{625}{15552}\approx4.02\%P(四进)=665×52×15=466561875=15552625≈4.02%。
四进带二举
相同的 444 个数有 555 种填法,且有 C62=15C_6^2=15C62=15 种顺序。
因此 P(四进带二举)=5×1566=7546656=2515552P(四进带二举)=\dfrac{5\times15}{6^6}=\dfrac{75}{46656}=\dfrac{25}{15552}P(四进带二举)=665×15=4665675=1555225。
二举
剩余的 444 个数有 545^454 种填法,且有 C62=15C_6^2=15C62=15 种顺序。
同时要减去四进带二举的情况。
因此 P(二举)=54×1566−2515552=930046656=7753888≈19.93%P(二举)=\dfrac{5^4\times15}{6^6}-\dfrac{25}{15552}=\dfrac{9300}{46656}=\dfrac{775}{3888}\approx19.93\%P(二举)=6654×15−1555225=466569300=3888775≈19.93%。
四进带一秀
先不考虑顺序。
第一个格子只能填 444,有 111 种情况;
第二至五个格子需要相同,可以填除 444 以外的任意数,有 555 种情况;
第六个格子既不能填 444,也不能与第二至五个格子重复,有 444 种情况。
若考虑顺序,444 可以填在 666 种位置,最后一个格子上的数可以填在剩余的 555 种位置。
因此 P(四进带一秀)=6×5×5×466=60046656=251944P(四进带一秀)=\dfrac{6\times5\times5\times4}{6^6}=\dfrac{600}{46656}=\dfrac{25}{1944}P(四进带一秀)=666×5×5×4=46656600=194425。
五子带一秀
先不考虑顺序。
相同的不得为 444,有 555 种。
考虑顺序,444 可放在 666 个位置,有 666 种。
因此 P(五子带一秀)=6×566=3046656=57776P(五子带一秀)=\dfrac{6\times5}{6^6}=\dfrac{30}{46656}=\dfrac{5}{7776}P(五子带一秀)=666×5=4665630=77765。
一秀
P(一秀)=P(一个四)−P(四进带一秀)−P(五子带一秀)−P(对堂)=6×5566−251944−57776−5324=1740046656=7251944≈37.29%\begin{aligned} P(一秀)&=P(一个四)-P(四进带一秀)-P(五子带一秀)-P(对堂)\\ &=\dfrac{6\times5^5}{6^6}-\dfrac{25}{1944}-\dfrac{5}{7776}-\dfrac{5}{324}=\dfrac{17400}{46656}=\dfrac{725}{1944}\approx37.29\% \end{aligned}P(一秀)=P(一个四)−P(四进带一秀)−P(五子带一秀)−P(对堂)=666×55−194425−77765−3245=4665617400=1944725≈37.29%。
无
将前面所有的减去可得 P(无)=1430046656=357511664≈30.65%P(无)=\dfrac{14300}{46656}=\dfrac{3575}{11664}\approx30.65\%P(无)=4665614300=116643575≈30.65%。
总结
结果 | 结果数 | 概率 |
---|---|---|
所有情况 | 46656 | 100% |
无 | 14300 | 30.65% |
一秀(不含四进带一秀、五子带一秀) | 17400 | 37.29% |
二举(不含四进带二举) | 9300 | 19.93% |
四进 | 1875 | 4.02% |
三红 | 2500 | 5.36% |
对堂 | 720 | 1.54% |
状元(包含所有普通以及特殊情况) | 561 | 1.20% |
状元(仅包含普通情况) | 360 | 0.772% |
五子 | 150 | 0.322% |
五红 | 30 | 0.064% |
六子 | 5 | 0.010% |
六红 | 1 | 0.002% |
状元插金花 | 15 | 0.032% |
有一种极为简单的方法:
#include <bits/stdc++.h>
using namespace std;
// 四进带一秀只算四进不算一秀
int cnt[7],cnt0,nothing,yixiu,erju,sijin,sanhong,duitang,normal_zhuangyuan,wuzi,wuhong,liuzi,liuhong,zhuangyuanchajinhua;
int main(){
for (int a=1;a<=6;a++) for (int b=1;b<=6;b++) for (int c=1;c<=6;c++) for (int d=1;d<=6;d++) for (int e=1;e<=6;e++) for (int f=1;f<=6;f++){
memset(cnt,0,sizeof cnt);
cnt[a]++,cnt[b]++,cnt[c]++,cnt[d]++,cnt[e]++,cnt[f]++;
if (cnt[1]==2&&cnt[4]==4) zhuangyuanchajinhua++;
else if (cnt[4]==6) liuhong++;
else if (cnt[1]==6||cnt[2]==6||cnt[3]==6||cnt[5]==6||cnt[6]==6) liuzi++;
else if (cnt[4]==5) wuhong++;
else if (cnt[1]==5||cnt[2]==5||cnt[3]==5||cnt[5]==5||cnt[6]==5) wuzi++;
else if (cnt[4]==4) normal_zhuangyuan++;
else if (cnt[1]==1&&cnt[2]==1&&cnt[3]==1&&cnt[4]==1&&cnt[5]==1&&cnt[6]==1) duitang++;
else if (cnt[4]==3) sanhong++;
else if (cnt[1]==4||cnt[2]==4||cnt[3]==4||cnt[5]==4||cnt[6]==4) sijin++;
else if (cnt[4]==2) erju++;
else if (cnt[4]==1) yixiu++;
else nothing++;
}
printf("%d %d %d %d %d %d %d %d %d %d %d %d\n",nothing,yixiu,erju,sijin,sanhong,duitang,normal_zhuangyuan,wuzi,wuhong,liuzi,liuhong,zhuangyuanchajinhua);
return 0;
}
思考题
假设给定每种结果一个分数 aia_iai,如何计算一个人博 nnn 次饼所期望能获得的分数(即获得分数的期望值)?(答案之后公布)