|
chinagamei 发表于 2012-10-8 17:33 ![]()
216/1111
怎么算的?
其实前面的算法都是错的,那些不可能出现的排列不能参与计算,而每轮的概率会受前一轮影响。
以三轮为例:前两轮都等于7的概率为36/1296; 第三轮的概率应该从剩下的(1296-36)/1296再去划分。
WITH d AS (
SELECT N1+N2 n
FROM (SELECT LEVEL N1 FROM DUAL CONNECT BY LEVEL<=6)
,(SELECT LEVEL N2 FROM DUAL CONNECT BY LEVEL<=6)
)
,r2 AS (
SELECT COUNT(CASE WHEN d1.n=7 AND d2.n=7 THEN 1 END) OVER() cnt_2
,COUNT(*) OVER() cnt_all_2
,d1.n n1
,d2.n n2
FROM d d1, d d2
)
SELECT COUNT(CASE WHEN n2=7 and d.n=7 THEN 1 END) cnt_3
,COUNT(CASE WHEN n1<n2 AND n2<d.n THEN 1 END) cnt_b_3
,COUNT(*) cnt_all_3
,MAX(cnt_2) cnt_2
,MAX(cnt_all_2) cnt_all_2
FROM r2,d
WHERE NOT (r2.n1=7 AND r2.n2=7)
/
CNT_3 CNT_B_3 CNT_ALL_3 CNT_2 CNT_ALL_2
---------- ---------- ---------- ---------- ----------
1080 5370 45360 36 1296
三轮下来,你赢的概率:
36/1296 + (1296-36)/1296 * 1080/45360
朋友赢的概率:
(1296-36)/1296 * 5370/45360
剩下的是未分胜负的概率,还应该继续往下算,最后应该能得出一个公式。
|
|