1、用随机投点法计算pi值
设有一半径为r的圆及其外切四边形。向该正方形随机地投掷n个点。设落入圆内的点数为k。由于所投入的点在正方形上均匀分布,因而所投入的点落入圆内的概率为(PI * pow(r,2)) / (4 * pow(r,2)) = PI / 4 。所以当n足够大时,k与n之比就逼近这一概率。从而,PI 约等于 (4*k)/n.如下图:
实现:
#include <iostream> #include <cstdlib> #include <limits> using namespace std; // 获得0-1之间的随机数 double get_random_num () { return (double)rand () / RAND_MAX ; } // 用随机投点法计算 PI double darts (int n) { int k = 0 ; for (int i = 0; i < n; ++ i) { double x = get_random_num() ; double y = get_random_num() ; if ((x * x + y * y) <= 1.0) { ++ k ; } } return (4 * k) / (double)n ; } int main() { cout << darts (200000000) << endl ; }