def is_correct(PRNG):
test = True
if True:
for seed in range(100):
#vérifie si tous les chiffres demandés apparaissent au moins une fois
l = []
ok= []
ok1 = []
long = 10
p = PRNG(seed, long)
for i in range (1000):
l.append(p.next_int())
for i in range (long):
ok.append(False)
for i in range (long):
ok1.append(True)
for i in range (len(l)):
a = l[i]
if a < long and a >= 0:
ok[a] = True
if ok != ok1:
test = False
#Test s'il n'y a pas de nombre hors de l'intervalle
for i in l:
if i >= long or i < 0:
test = False
#Test si avec deux seed différentes le résultat est bien différent
p1 = PRNG(seed+1, long)
l1 = []
for i in range (1000):
l1.append(p1.next_int())
if l1 == l:
test = False
#Test si avec la même seed le résultat est bien le même
p2 = PRNG(seed, long)
l2 = []
for i in range (1000):
l2.append(p2.next_int())
if l2 != l:
test = False
#vérifie s'il n'y a pas une séquence répétitive
test3 = False
for i in range (len(l)):
if i == 0:
pass
elif l[i] == l[0]:
try:
for j in range (25):
if not l[i+j] == l[j]:
test3 = True
if test3 == False:
test = False
except:
pass
#vérifie s'il n'y a pas de suit arithmétique
l3 = []
for i in range (len(l)-1):
a = l[i+1] - l[i]
l3.append(a)
for nbr in range (len(l3)-1):
l3[nbr] -= l3[nbr+1]
if l3 == 0:
test = False
#vérifie s'il n'y a pas de suite géométrique
l4 = []
for i in range (len(l)-1):
if l[i] == 0:
break
b = l[i+1] / l[i]
l4.append(b)
for nbr in range (len(l4)-1):
l4[nbr] -= l4[nbr+1]
if l4 == 0:
test = False
return test