H

C++でモンテカルロ法

パワープレイの実装
モンテカルロ法についてはこちらを参照
ja.wikipedia.org

コード

#include <iostream>
#include <math.h>
#include <random>

float epoc(int v){
    float x[v];
    float y[v];

    for(int i=0;i<v;i++){
        x[i] = (float)rand()/RAND_MAX;
        y[i] = (float)rand()/RAND_MAX;
    }

    float r;
    int cnt = 0;
    float n;

    for(int i=0;i<v;i++){
        n = (float)sqrt(pow(x[i], 2) + pow(y[i], 2));
        if(n < 1){
            cnt = cnt + 1;
        }
    }

    r = (float)4 * cnt / v;
    return r;
}

int main(){

    int n;
    std::cin >> n;

    std::cout << epoc(n) << std::endl;

    return 0;
}

標準入力で制御できるようにした。

結果:
200000のとき……3.13908

C++始めたてだから乱数あってないかもね。