>>135 コードの内容は理解できないけど時間がかかることはわかるよ
~~~ {.cpp}
for(int i = 0;i < (4 * n * n);++i)
~~~
試行回数と円の半径を関係づけている理由がわからない
ちょっと書き換えたコードでは
~~~ {.cpp}
template <class Generator>
int count (int n, const double& radius, Generator g) {
std::uniform_real_distribution <double> dist (- radius, radius);
int cnt = 0;
while (0 < n--) {
auto a = dist (g);
auto b = dist (g);
if (a * a + b * b < radius * radius) {
++cnt;
}
}
return cnt;
}
~~~
次のことが成り立つと思う
1. 半径関係ない: `count (n, r) = count (n, s)` statistically holds for any `0 < r, s`
2. $\pi/4$に収束: `count (n, r) / n -> pi / 4` as `n -> infinity`
3. $1/n$の分散: `(count (n, r) / n - pi / 4) ^ 2 propto 1 / n` statistically holds for enough large `n`

3について試したけど、綺麗に`1 / n`に比例したよ
比例係数も計算で出せるんじゃないかと思うけど自分にはわからない