From b56db38ffe628748d14079bf88e7240813baf826 Mon Sep 17 00:00:00 2001
From: Enzo De Carvalho Bittencourt <enzo.decarvalhobittencourt@ensiie.eu>
Date: Thu, 28 Sep 2023 17:38:04 +0200
Subject: [PATCH] prepared pipeline

---
 Random/__pycache__/stats.cpython-311.pyc | Bin 1115 -> 773 bytes
 Random/graph.py                          |   2 +
 Random/main.py                           |  53 ++++++++++++++++++-----
 Random/stats.py                          |  11 ++---
 4 files changed, 48 insertions(+), 18 deletions(-)

diff --git a/Random/__pycache__/stats.cpython-311.pyc b/Random/__pycache__/stats.cpython-311.pyc
index 99b30e77125b8e59c18d27673114aa526b93eba2..8fbafb1507b9d7c92e33b0c08d6980c068386049 100644
GIT binary patch
delta 441
zcmcc3(aOfRoR^o20SJU<iKbdIPUM?a&jI8y1M%lsKw>&W2_uk#f-E?@234F1rXqzg
zg{g*d8BqUfkQrdGhItuKel=W843JgJRLfk#22;Vnki`OHYb{`fF_GySre#3OSHm3;
z%%I6KS(Hgjw+LkJOOUuG<1Ln?%)DYvwp&bj1-CdeGK)*{(~A;wZ*k-Rg$ojsQzuVk
zl2T&1#hh4Fbc;F2HTV{9eo}F2QCVtAd|FXz;Vs7aVvs{7KVfq969h6qVNvV|BpMjL
zaxh3r&*51RytZgf^$x=wfjf#X>N{W2cfKIua#6zN3Xo(GY4Dw3c$ZtC$ND<A!X<8n
z1+o{p^{;U2UtrOne3n^44dme>P7nbyd?iDX5Qr@RBz|$&<mRW8=A_yciB0BaF_B?q
MH2A=PNq}_#0K~Fe$^ZZW

literal 1115
zcmZ`&%}X0W6rbIl#AIWt#Avl3jy)7pj3H3;&=M&`GzW#&o<ixe?oM#SW;gDKG$DZ$
zdgwu+g@RrR9$IVBL;nQ(A7slyWx!J@#alpn@zmMX4aU;9Gw*}<@q06G_H#VW14_TQ
zhw%stz)#Nzh}u4#BPw=)42nQzWL9O0tS`ADCv&es5z6c;NWuCdzpTr)ijk!wNmM0U
z6)lW5MMKeTlS<XbNY{`^mtlxCe(H%WYL=qnX;i_YHjS_)&CI0uGY@q|3gA5}OgBgO
z`3uHt#iBf*a#wHA_Kw(nns?aEeNMF|+vFNtgQ>@;4tsLDaSd4Z>iZ;L#U8=lTFsCZ
z4PpRjz<r8**hTO0g?fD@mI2rOJw1einvEM-|B1SR+uI|>=@04wQ0@!#y-1*4mkmfU
zd+v)4GE|@95hZC|F*j_{z%nZ72C_AUiVBhy(=wDbKjc}8A#np+wxJ1<Zfll#=G{k%
zB_VTNtYX5K6jc@c(Wjz>)v6>+>ulJVz>=-11e!`6lTg)AG>dSiU7?ARQms*8iIz#C
z-6m3D!qI0#m=(eZBz%cR;`*A2jZG{IB?E7eIDT2hl67U8-mCFWg3!hN%(`B|nX;&*
zMa|SR3oEOI!a`=Xuvo}E6*XC}WPHRKik;|!%EHyDjZs?4yFzn^vKIIg0fULH+V0Rn
zzCDn22D0uz_SI7BajSHaytA8qx71qxl^l7$xR-YCJ~(EMC%<v+WZp^U-DJMCd<vs)
z(heMT;pm6q-KH~^cE{3f=q>8nzPokr?YP5FxctPY#K)0?xHCEHPR=@T&V_SrICmNw
z+<N#UhQ7zp-uTzJ6U(`=TpQ-jX=`+Rq)!lJT@nNm((FpLW_W!Yw>;*Z;tMdwJpDFh
z7m-I5|Ch}f<J9zKXU<dB;TVSLup9$Bz+(}>47EYxa-D$wmj87i&&+qgzsv{t3&r3A
A^Z)<=

diff --git a/Random/graph.py b/Random/graph.py
index ad5d45e..38f1c6a 100644
--- a/Random/graph.py
+++ b/Random/graph.py
@@ -33,6 +33,8 @@ def ecdf_graph(N,RESOLUTION,seed,data):
         xlabel= "Value"
         ylabel="Cumulative Probability"
         title_name= name +"\n N = "+str(N)+"\n seed = "+str(seed) 
+        if N==0:
+            title_name= name +"\n seed = "+str(seed) 
         graph=sns.displot(data[name], kind="ecdf")
         graph.set(title=title_name)
         graph.set_axis_labels(xlabel,ylabel)
diff --git a/Random/main.py b/Random/main.py
index 4af1704..5d330c9 100755
--- a/Random/main.py
+++ b/Random/main.py
@@ -57,9 +57,9 @@ def write_stats(data, name):
     skew      = scipy.stats.skew(data)
     exckurt   = scipy.stats.kurtosis(data) - 3
     #write file
-    with open(name+'.csv', 'w', newline='') as csvfile:
+    with open('stats.csv', 'a', newline='') as csvfile:
         datawriter = csv.DictWriter(csvfile, fieldnames=fields)
-        datawriter.writeheader()
+        #datawriter.writeheader()
         datawriter.writerow({
                     "name" : name,
                     "quantil25" : str(quantil25),
@@ -71,10 +71,26 @@ def write_stats(data, name):
                     "exckurt"   : str(exckurt)})
     return
 
+def write_stats_chi(data, name, RES):
+    fields=["chi","p"] 
+    val = stats.chisquared_uniform(data,RES)
+    chi = val[0]
+    p = val[1] 
+    #write file
+    with open('chi.csv', 'a', newline='') as csvfile:
+        datawriter = csv.DictWriter(csvfile, fieldnames=fields)
+        #datawriter.writeheader()
+        datawriter.writerow({
+                    "name" : name,
+                    "chi" : str(chi),
+                    "p" : str(p)})
+    return
+
 if __name__=="__main__":
     ##INIT PARAMS##
-    N = 100
-    RESOLUTION = 1000
+    N = 1000000
+    RESOLUTION = 100
+    iterN = [100, 1000000, 100000000] 
     
     #init generators
     generators = [ParkMiller(), KnuthLewis(), Marsaglia()
@@ -87,7 +103,7 @@ if __name__=="__main__":
     #set seaborn params
     sns.set_theme(style="darkgrid")
      
-    #generate all diagrams
+    #generate N random values for each RNG
     data = values(N,seed,generators)
     
     #graph.hist_distributivity_graph(N,RESOLUTION,seed,data)
@@ -96,8 +112,25 @@ if __name__=="__main__":
     
     #graph.ecdf_graph(N,RESOLUTION,seed,data)
     
-    graph.compare(0, RESOLUTION, seed
-                  , iteratives([1000, 10, 100], seed, ParkMiller()))
-    print(stats.chisquared_uniform(data["ParkMiller"],N))
-    print(np.quantile(data["ParkMiller"],0.25))
-    write_stats(data["ParkMiller"],"ParkMiller")
+    #graph.compare(0, RESOLUTION, seed
+    #              , iteratives([1000, 10, 100], seed, ParkMiller()))
+    #print(stats.chisquared_uniform(data["ParkMiller"],RESOLUTION))
+    #print(np.quantile(data["ParkMiller"],0.25))
+    #write_stats(data["ParkMiller"],"ParkMiller")
+    #write_stats_chi(data["ParkMiller"], "ParkMiller", RESOLUTION)
+
+    #generate a lot of diagrams
+    graph.hist_distributivity_graph(N,RESOLUTION,seed,data)
+    
+    for name in data:
+        write_stats(data[name],name)
+        write_stats_chi(data[name],name)
+
+    for name in generators:
+        data_iter = iteratives(iterN, seed, name)
+        
+        graph.ecdf_graph(0, RESOLUTION, seed, data_iter)
+        graph.compare(0, RESOLUTION, seed, data_iter)
+        
+        
+
diff --git a/Random/stats.py b/Random/stats.py
index 6b1b11d..31cb2d1 100644
--- a/Random/stats.py
+++ b/Random/stats.py
@@ -5,15 +5,10 @@ Module to calculate various value on an array
 import numpy as np
 import scipy
 
-def chisquared_uniform(arr, N):
+def chisquared_uniform(arr,RES):
     """
     chisquared for uniform distrib
     """
-    _,counts = np.unique(arr, return_counts=True)
-    observed_freq = counts/N
-    #print(observed_freq)
-    expected_freq = np.full(shape=observed_freq.size,fill_value=1/N)
-    print(observed_freq),print(expected_freq)
-    print(np.sum(expected_freq), np.sum(observed_freq))
-    return scipy.stats.chisquare(observed_freq, expected_freq)
+    observed_freq, _  = np.histogram(arr, bins=np.linspace(0,1,RES))
+    return scipy.stats.chisquare(observed_freq)
 
-- 
GitLab