correction du code

This commit is contained in:
Pierre-antoine Comby 2019-03-01 09:53:32 +01:00
parent 4e367a1297
commit a8c8245d15

View file

@ -2,28 +2,78 @@
import numpy as np import numpy as np
N=10
p_s = [0.1,0.9] p = 0.2
P = np.random.rand(N) P = np.random.rand(N)
X = [0 for p in P if p > p_s[0] else 1] X = np.zeros(N,dtype='int')
for i in range(N):
if P[i] > p:
X[i] = 1
X=[0,1,0,0,1,0,0,0,0,0]
print(X)
def binary(n,b=2,m): def binary(n,m,b=2):
""" """
Convertie un nombre décimal en sa version binaire tronqué à m bits. Convertie un nombre décimal en sa version binaire tronqué à m bits.
""" """
return np.ceil(n*b**m) binaire= np.floor(n*b**m) # on se décale dans les entiers et on floor
def arithm(X): return binaire,np.binary_repr(int(binaire))
def arithm(X,p):
l=[0] l=[0]
h= [1] h= [1]
for x in X: for x in X:
if x == 0: if x == 0:
h.append(l[-1]+p_s[0]*(h[-1]-l[-1])) h.append(l[-1]+p*(h[-1]-l[-1]))
l.append(l[-1]) l.append(l[-1])
else: else:
l.append(l[-1]+p_s[0]*(h[-1]-l[-1])) l.append(l[-1]+p*(h[-1]-l[-1]))
h.append(h[-1]) h.append(h[-1])
lmb = (l[-1]+h[-1])/2 lmb = (l[-1]+h[-1])/2
mu = int(-np.log2(h[-1]-l[-1]))+1 mu = int(-np.log2(h[-1]-l[-1]))+1
code = binary(lmb,mu)
return code,lmb,mu
def arithm_pratique(X,p):
l = [0] # borne inférieur
h =[1] # borne supérieur
f = 0 # follow
c =[] # code
for k in range(len(X)):
print("for loop")
if X[k] == 0:
l.append(l[-1])
h.append(l[-1]+p*(h[-1]-l[-1]))
else:
l.append(l[-1]+p*(h[-1]-l[-1]))
h.append(h[-1])
print(X[k])
print(l[-3:])
print(h[-3:])
while ((l[-1]>=0 and h[-1]<0.5)
or (l[-1]>=0.5 and h[-1]<1)
or (l[-1]>= 0.25 and h[-1]<0.75)):
print(" loop")
if (l[-1]>=0 and h[-1]<0.5):
print(" case 1")
c += [0]+[1]*f
l[-1] *=2
h[-1] *=2
elif (l[-1]>=0.5 and h[-1]<1):
print(" case 2")
c += [1]+[0]*f
l[-1] = 2*l[-1]-1
h[-1] = 2*h[-1]-1
elif (l[-1]>= 0.25 and h[-1]<0.75):
print(" case 3")
f +=1
l[-1] = 2*l[-1]-0.5
h[-1] = 2*h[-1]-0.5
return c
#print(arithm(X,p))
print(arithm_pratique(X,p))