⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 estimatepai.cpp

📁 布冯针 布冯针 布冯针 布冯针 布冯针 布冯针 布冯针
💻 CPP
字号:
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <math.h>
using namespace std;
//设地板宽度为10,针长为地板宽度的一半5 简单了点,主要看看行不行??
//试了一下改进的算法,取针长等于地板宽度看是否可以提高效率???
int main()
{
	double a[5] = { 0.0, 10.0, 20.0, 30.0, 40.0 };	//用数组a来描述地板,每个数组元素为地板缝隙的Y值,设有5条缝隙
	double x, y0, y1, pi = 0;						// x为针与缝隙的角度(0-180)度,y0为针的一个起始端点,y1为末端点,Pi为所求值
	double n, k=0;									//n为落下针的数目,k为落下针与缝隙相交的数目
	

	cout << "\n输入丢针的次数: ";
	cin >> n;
	
	srand( time(NULL) );
	for(int i=0; i<n; i++)
	{
		y0 = (rand() / (RAND_MAX + 1.0)) * 40;		//生成一个0-40的随机数赋给y0
		x = (rand() / (RAND_MAX + 1.0)) * 3.14;		//生成一个0-180度的随机值给X
		y1 = y0 + 10 * sin(x);						//求出末端点的y值
		//y1 = y0 + 5 * sin(x);
		for(int j=0; j<5; j++)
		{
			if(y0 <= a[j] && y1 >= a[j])			//通过比较确定针是否与缝隙相交
				k++;
			else 
				;
		}
		
	}

	pi = (2 * n) / k;
	//pi = n / k;
	cout << "\npi=" << pi;
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -