From ede77458c98452da90501f3d5ea868529475cdec Mon Sep 17 00:00:00 2001
From: Hugo TRACHINO <hugo.trachino@pc127-01.pedago.ensiie.fr>
Date: Fri, 27 Sep 2019 17:41:32 +0200
Subject: [PATCH] montecarlo computing pi like a boss

---
 fcts.h          |  3 +--
 monte_carlo.cpp | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 2 deletions(-)
 create mode 100644 monte_carlo.cpp

diff --git a/fcts.h b/fcts.h
index 1b9bcbd..c64354f 100644
--- a/fcts.h
+++ b/fcts.h
@@ -14,7 +14,7 @@ long uniform() {
    lo+= (hi & 0x7FFF) << 16;
    lo+= hi >> 15;
    
-   if (lo > 0x7FFFFFFFF)
+   if (lo > 0x7FFFFFFF)
       lo -= 0x7FFFFFFF;
    seed=(long) lo;
    return seed ;
@@ -31,7 +31,6 @@ void store_res(long * res, int freqs[], int nRNG, int nCuts){
 	freqcsv.open("gva_freqs.csv");
 	int i;
 	for (i = 0; i < nRNG; i ++){
-		printf("i = %d, nRNG= %d\n ", i, nRNG);
 		freqs[res[i]%nCuts] ++;
 		myfile << res[i];
 		myfile << "\n";
diff --git a/monte_carlo.cpp b/monte_carlo.cpp
new file mode 100644
index 0000000..1f6de92
--- /dev/null
+++ b/monte_carlo.cpp
@@ -0,0 +1,32 @@
+#include "fcts.h"
+
+int main(int argc, char ** argv){
+	int i, nRNG;
+	double nAcc=0;
+	if(argc < 2){
+		return -1;
+	}
+	nRNG = atoi(argv[1]);
+	double x, y;
+	long res[nRNG*2];
+	double max=0;
+	for (i = 0; i < nRNG; i++){
+		x = ((double) uniform())/(double)0x7FFFFFFF;
+		y = ((double) uniform())/(double)0x7FFFFFFF;
+		printf("x= %lf", x);
+		if (x > max)
+			max = x;
+		if (x *x + y * y <= 1){
+		    nAcc ++;
+		}
+		res[2*i] = x;
+		res[2*i+1]=y;
+	}
+	printf("\n max = %lf \n", max);
+	int freqs[10];
+	for (i = 0; i < 10 ; i++)
+		freqs[i] = 0;
+	store_res(res, freqs, nRNG, 10);
+	double pi = 4 * nAcc/nRNG;
+	printf("%lf \n", pi);
+}
-- 
GitLab