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++始めたてだから乱数あってないかもね。