Buffon投针试验【布丰】

【背景介绍】

相关背景介绍见:http://www.gxtvu.com.cn/eduwest/web_courseware/maths/0092/8/8-2.htm

 

【模型分析】

【编程实现】

// Buffon_Needle.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iostream> #include<ctime> #include<cstdlib> using namespace std; void rand_seed(); double rand_double(double a,double b); const int M=100000; //投掷的总次数 const double D=2; //两线之间的间距 const double L=1; //针的长度 int main(void) { int N=0; rand_seed(); for(int i=0;i<M;i++) { double x=rand_double(0,2); double y=rand_double(0,2); if(x*x+y*y<=4) N++; } double PI=4.0*N/M; cout<<PI<<endl; system("pause"); return 0; } /** 设置随机数生成的种子 */ void rand_seed() { int seed=static_cast<int>(time(0)); srand(seed); } /** 计算某一区域内的随机浮点数 @param a 区域的下边界 @param b 区域的上边界 @return 随机浮点数x,x∈[a,b] */ double rand_double(double a,double b) { return a+(b-a)*rand()*1.0/RAND_MAX; }

【实验结果】

PI=3.14

你可能感兴趣的:(编程)