当我不这样做时,我总是得到0作为答案

时间:2018-11-27 17:44:49

标签: c++

我正在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

0 个答案:

没有答案