计算π-C++

 C++使用蒙特卡罗方法(Monte Carlo method)计算π

蒙特卡罗法也称统计模拟法、统计试验法。是把概率现象作为研究对象的数值模拟方法。是按抽样调查法求取统计值来推定未知特性量的计算方法。蒙特卡罗是摩纳哥的著名赌城,该法为表明其随机抽样的本质而命名。故适用于对离散系统进行计算仿真试验。在计算仿真中,通过构造一个和系统性能相近似的概率模型,并在数字计算机上进行随机试验,可以模拟系统的随机特性。

#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int main() {
    int n = 1000000;  // 随机点的个数
    int count = 0;  // 计数器,用于记录位于圆内的随机点数

    // 获取当前时间的秒数,用于生成随机数种子
    srand(static_cast<unsigned int>(time(nullptr)));

    for (int i = 0; i < n; i++) {
        // 生成[-1, 1]之间的随机数
        double x = static_cast<double>(rand() / static_cast<double>(RAND_MAX) * 2 - 1);
        double y = static_cast<double>(rand() / static_cast<double>(RAND_MAX) * 2 - 1);

        // 判断该点是否在圆内
        if (x * x + y * y <= 1) {
            count++;
        }
    }

    // 计算估计的圆周率
    double pi = static_cast<double>(count) / static_cast<double>(n) * 4;

    // 输出计算结果
    cout << "随机点个数: " << n << endl;
    cout << "圆内的点个数: " << count << endl;
    printf("计算得到的π的值: %.8f\n", pi);

    return 0;
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值