Chciał bym tylko jeszcze zasugerować by wywalić ewentualne białe linie na początku i na końcu, bo mi czasem zdarza się zrobić, np. tak:
```
```
#include <iostream>
#include <iomanip>
#include <boost/random.hpp>
#include <ctime>
#include <cmath>
using namespace std;
using namespace boost;
const int test_count = 10000000;
int main() {
mt19937 rng;
rng.seed(static_cast<unsigned> (std::time(0)));
uniform_real<double> dist(0, 1);
variate_generator<mt19937&, uniform_real<double="uniform_real<double"> > sample(rng, dist);
double x = 0, y = 0;
unsigned int in_circle = 0;
for(int i = 0; i < test_count; ++i) {
x = sample(), y = sample();
if(sqrt(x*x+y*y) <= 1) ++in_circle;
}
cout < setprecision(50) < 4.0*in_circle/test_count < endl;
return 0;
}
```
```
Otrzymuję:
#include <iostream>
#include <iomanip>
#include <boost/random.hpp>
#include <ctime>
#include <cmath>
using namespace std;
using namespace boost;
const int test_count = 10000000;
int main() {
mt19937 rng;
rng.seed(static_cast<unsigned> (std::time(0)));
uniform_real<double> dist(0, 1);
variate_generator<mt19937&, uniform_real<double> > sample(rng, dist);
double x = 0, y = 0;
unsigned int in_circle = 0;
for(int i = 0; i < test_count; ++i) {
x = sample(), y = sample();
if(sqrt(x*x+y*y) <= 1) ++in_circle;
}
cout << setprecision(50) << 4.0*in_circle/test_count << endl;
return 0;
}