#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 ; }
随机投点法计算圆周率
结果还是很准的
1. RAND_MAX在cstdlib中
2.rand()在cstdlib中,随机产生一个整数, 每次执行产生的是相同的
3. srand(); 常用srand((unsigned)time(NULL));