]> AND Private Git Repository - 16dcc.git/blobdiff - evalPRNG/compareFonctionMixingTime.py
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
quelques corrections après remarques de Sylvain
[16dcc.git] / evalPRNG / compareFonctionMixingTime.py
index 2e6b0f5040df284e979bc7072b5c6ba88091dcce..6d6e6027d94fd9afc21b25838c91a7c5934d4fd9 100644 (file)
@@ -27,7 +27,7 @@ def dec(ch,n):
 
 
 def MarkovMatrixUnPas(fbin,n,p2n,lp2nm1):
 
 
 def MarkovMatrixUnPas(fbin,n,p2n,lp2nm1):
-    print p2n
+    #print p2n
     MM = np.zeros((p2n,p2n))
     # diagonal
     for i in lp2nm1 :
     MM = np.zeros((p2n,p2n))
     # diagonal
     for i in lp2nm1 :
@@ -59,7 +59,7 @@ def MarkovMatrixUnPas(fbin,n,p2n,lp2nm1):
 
 
 def MarkovMatrixSaut(fbin,n,p2n,lp2nm1):
 
 
 def MarkovMatrixSaut(fbin,n,p2n,lp2nm1):
-    print p2n
+    #print p2n
     MM = np.zeros((p2n,p2n))
     # diagonal
     for i in lp2nm1 :
     MM = np.zeros((p2n,p2n))
     # diagonal
     for i in lp2nm1 :
@@ -142,19 +142,19 @@ def traite_f(f,dev):
     M = np.zeros((p2n,p2n))
     np.copyto(M,MM)
     
     M = np.zeros((p2n,p2n))
     np.copyto(M,MM)
     
-    MMs = MarkovMatrixSaut(fbin,n,p2n,lp2nm1)
-    Ms = np.zeros((p2n,p2n))
-    np.copyto(Ms,MMs)
-    
-
-    
     error = 1
     cpt = 2
     error = 1
     cpt = 2
-    while error > dev :
+    while error > dev and cpt < 1000:
         M = np.dot(M,MM)
         error =max([sqrt(sum([(M[i,j] - float(1)/p2n)**2  for i in range(p2n)])) for j in range(p2n)])
         #print cpt, error, M
         cpt +=1
         M = np.dot(M,MM)
         error =max([sqrt(sum([(M[i,j] - float(1)/p2n)**2  for i in range(p2n)])) for j in range(p2n)])
         #print cpt, error, M
         cpt +=1
+
+
+    """
+    MMs = MarkovMatrixSaut(fbin,n,p2n,lp2nm1)
+    Ms = np.zeros((p2n,p2n))
+    np.copyto(Ms,MMs)
     
 
     error = 1
     
 
     error = 1
@@ -167,8 +167,8 @@ def traite_f(f,dev):
         #print cpt, error, M
         cpts +=1
 
         #print cpt, error, M
         cpts +=1
 
-
-
+    """
+    cpts=1
     return n, cpt-1, cpts-1
 
 
     return n, cpt-1, cpts-1
 
 
@@ -219,15 +219,17 @@ def main():
     brut=[]
     cpt = 0
     for f in lf:
     brut=[]
     cpt = 0
     for f in lf:
-        dev = 1E-15
+        #print "cpt",cpt
+        dev = 1E-14
         n,cptM,cptS = traite_f(f,dev)
         brut +=[(f,cptM,cptS)]
         n,cptM,cptS = traite_f(f,dev)
         brut +=[(f,cptM,cptS)]
+        cpt+=1
         """
         print f, n,cptM,cptS
         #print 8*n*n + 4*n*log(n+1)#,8*n*n + (n+2)*(log(n)+2)
         #print "Pour "+str(n)+" bits et pour eps="+str(dev)+", appels a rand moy pr 1 bit genere.",
         print cpt
         """
         print f, n,cptM,cptS
         #print 8*n*n + 4*n*log(n+1)#,8*n*n + (n+2)*(log(n)+2)
         #print "Pour "+str(n)+" bits et pour eps="+str(dev)+", appels a rand moy pr 1 bit genere.",
         print cpt
-        cpt+=1
+
         brut.sort(cmp=compareMarche)
         f,cptM,cptS = brut[0]
 
         brut.sort(cmp=compareMarche)
         f,cptM,cptS = brut[0]
 
@@ -262,6 +264,7 @@ def options():
     parser = OptionParser()
     parser.add_option("-i", "--input", dest="i",
                       help="file of sequences")
     parser = OptionParser()
     parser.add_option("-i", "--input", dest="i",
                       help="file of sequences")
+
     (options, args) = parser.parse_args()
     if (options.i != None):
         rf = options.i
     (options, args) = parser.parse_args()
     if (options.i != None):
         rf = options.i