|
20# , 我尝试了一下。 如果列出所有再求平均可能太多了。
我觉得这个尝试次数越多平均值会越接近一个值,按照这个想法先把一次的弄出来,再反复看看。
单次的分数如下, 可以反复执行,呵呵。
SELECT COUNT(DISTINCT MAX_VAL) TTL_SCR
FROM (
SELECT ROWNUM RN, N
,MAX(N)OVER(ORDER BY ROWNUM) MAX_VAL
FROM (SELECT LEVEL N FROM DUAL CONNECT BY LEVEL <= 12 ORDER BY DBMS_RANDOM.value )
);
之后是要反复执行了。
我记得 newkid 说过标量子查询如果传过来的值变,就不使用缓存结果。验证了一下,果然好用。
下面就简单了, 次数越多果然趋近于一个值, 3.11 ,但也会越来越慢。
SELECT MAX(CNT) TTL_CNT
,ROUND(AVG(SCR),2) AVG_SCR
FROM (
SELECT T2.CNT
,( SELECT COUNT(DISTINCT MAX_VAL) TTL_SCR
FROM (
SELECT ROWNUM RN, N
,MAX(N)OVER(ORDER BY ROWNUM) MAX_VAL
FROM (SELECT LEVEL N FROM DUAL CONNECT BY LEVEL <= 12 ORDER BY DBMS_RANDOM.value )
) A
WHERE T2.CNT = T2.CNT
) SCR
FROM (SELECT LEVEL CNT FROM DUAL CONNECT BY LEVEL <= 10000) T2
);
最后问下 newkid , 这个给章不? ^^ |
|