我正在C ++课程中学习函数。当我在程序中输入大量迭代次数时,它将把随机的“飞镖”扔到板上。然后,它确定有多少支飞镖降落在圆圈内而不是正方形内。然后根据结果计算pi。 此问题也称为蒙特卡洛估计:http://polymer.bu.edu/java/java/montepi/MontePi.html
#include <iostream>
#include <math.h>
using namespace std;
int getRandomX(float &x);
int getRandomY(float &y);
bool insideCircle(float x, float y);
int getInput();
main()
{
int iter = getInput();
int inside = 0;
float x = getRandomX(x);
float y = getRandomY(y);
for(int i=0; i<iter; i++)
{
if(insideCircle(x,y))
{
inside++;
}
}
float pi = (4 * inside)/iter;
cout << "Pi: " << pi;
}
int getRandomX(float &x)
{
float numx = (rand() / RAND_MAX) * 2 - 1;
return numx;
}
int getRandomY(float &y)
{
float numy = (rand() / RAND_MAX) * 2 - 1;
return numy;
}
bool insideCircle(float x, float y)
{
float dist = sqrt(pow(x, 2) + pow(y, 2));
if(dist <= 1)
{
return true;
}
else
{
return false;
}
}
int getInput()
{
while(true)
{
float num;
cout << "Enter a number of iterations: ";
cin >> num;
if(num > 0)
{
return num;
}
}
}
这是我从控制台获得的信息: https://gyazo.com/9708adca111e630fa24ccba8ed2df3cc
这是我应该得到的: https://gyazo.com/5c42981fb207fe0480e1998b65604edd