蒲丰投针试验
1777年的一天,法国数学家蒲丰(Comte de Buffon,1707-1788)把一些朋友请到家里。他事先在一张大白纸上画好了一条条等距离的平行线,又拿出许多质量均匀、长度恰好是平行线间距的一半的小针,请朋友们把针一枚一枚随意投到白纸上,如图1。蒲丰则在一旁观察每一枚投出的针是否与平行线相交。计数结果是:共投了2212枚,其中704枚与平行线相交。于是,蒲丰计算了这两数之商:2212/704≈3.142,然后宣布,这就是圆周率π的近似值!
假设平行线之间距离是2,共6条线,针的长度是1,每次y坐标在0~10之间,终点与起点的夹角是随机数,终点的y坐标是y+sin(a).2000次模拟的结果离π很远。100万次还差不多。
with t2 as(select (level-1)*2 L2 from dual connect by level<=6) --0 2 4 6 8 10
,a as(select dbms_random.value(0,10)y, sin(dbms_random.value(-100,100))sina from dual connect by level<=2000)
select 2000/count(*) pi
from a
where exists(select 1 from t2 where L2 between least(y , y+sina)and greatest(y , y+sina))
;