c++计算圆周率

在C++中,可以使用一些数学算法来近似计算圆周率。以下是使用Leibniz级数和蒙特卡洛方法计算圆周率的示例代码:

  1. 使用Leibniz级数计算圆周率:

#include

double calculatePiLeibniz(int iterations) {

    double pi = 0.0;

    double sign = 1.0;

    for (int i = 0; i < iterations; i++) {

        pi += sign / (2*i + 1);

        sign *= -1;

    }

    return pi * 4;

}

int main() {

    int iterations;

    std::cout << "Enter the number of iterations: ";

    std::cin >> iterations;

    double pi = calculatePiLeibniz(iterations);

    std::cout << "Approximated Pi using Leibniz series: " << pi << std::endl;

    return 0;

}

运行程序后,根据输入的迭代次数,它将近似计算圆周率,并输出结果。

  1. 使用蒙特卡洛方法计算圆周率:

#include

#include

double calculatePiMonteCarlo(int samples) {

    std::random_device rd;

    std::mt19937 gen(rd());

    std::uniform_real_distribution dist(0.0, 1.0);

    int pointsInCircle = 0;

    for (int i = 0; i < samples; i++) {

        double x = dist(gen);

        double y = dist(gen);

        double distance = x * x + y * y;

        if (distance <= 1) {

            pointsInCircle++;

        }

    }

    return double(pointsInCircle) / samples * 4;

}

int main() {

    int samples;

    std::cout << "Enter the number of samples: ";

    std::cin >> samples;

    double pi = calculatePiMonteCarlo(samples);

    std::cout << "Approximated Pi using Monte Carlo method: " << pi << std::endl;

    return 0;

}

运行程序后,根据输入的样本数量,它将使用蒙特卡洛方法近似计算圆周率,并输出结果。

这两种方法都是近似计算圆周率的方法,结果的精度取决于迭代次数或样本数量的多少。较大的迭代次数和样本数量通常会得到更准确的结果。

你可能感兴趣的:(c++,算法,开发语言)