Tanky Woo » 随机化算法(2) — 数值概率算法
用随机投点法计算Pi值
设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为(Pi*r*r)/(4*r*r)= Pi/4 。所以当n足够大时,k与n之比就逼近这一概率。从而,PI 约等于 (4*k)/n.
用随机投点法计算Pi值
设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为(Pi*r*r)/(4*r*r)= Pi/4 。所以当n足够大时,k与n之比就逼近这一概率。从而,PI 约等于 (4*k)/n.
double Darts(long n) { // 用随机投点法计算Pi值 static RandomNumber dart; long k = 0; for(long i=1; i<=n; ++i) { double x = dart.fRandom(); double y = dart.fRandom(); // 在圆内 if((x*x+y*y) <= 1) ++k; } return 4 * k / double(n); }Read full article from Tanky Woo » 随机化算法(2) — 数值概率算法