import math
p=0.7
n=100
k=1/math.sqrt(n)
a=p-k
b=p+k
print(f"I=[{a:.8f} ; {b:.8f}]")
I=[0.60000000 ; 0.80000000]
k=1.96*math.sqrt(p*(1-p))/math.sqrt(n)
a=p-k
b=p+k
print(f"I=[{a:.8f} ; {b:.8f}]")
I=[0.61018152 ; 0.78981848]
#------------------------------------------------------
def fact(n) :
"Calcule factoriel n."
if (n==0) :
return 1
else :
p=1
for k in range(1,n+1):
p=p*k
return p
#------------------------------------------------------
def combin (n,k):
"Calcule k parmi n."
p=1
for i in range(n-k+1,n+1) :
p=p*i
return p//fact(k)
def binomial(n,p,k):
"Calcule p(x=k)"
return math.exp(math.log(combin(n,k))+k*math.log(p)+(n-k)*math.log(1-p))
cumul=0
d=dict() # dictionaire des (k,p(x=k))
for k in range(n+1):
cumul+=binomial(n,p,k)
d[k]=cumul
for (c,v) in d.items() : # recherche de a
if v>0.025 :
a=c
break
for (c,v) in d.items() : # recherche de b
if v>0.975 :
b=c
break
print(f"I=[{a/n:.8f} ; {b/n:.8f}]")
I=[0.61000000 ; 0.79000000]
d_bas=dict((c,v) for (c,v) in d.items() if a-10<c<a+10)
for (c,v) in d_bas.items():
print(f"{c:4d} | {v:.6f}")
if (c==a-1):
print("------------------ 0,025")
52 | 0.000117 53 | 0.000256 54 | 0.000537 55 | 0.001086 56 | 0.002115 57 | 0.003968 58 | 0.007174 59 | 0.012498 60 | 0.020989 ------------------ 0,025 61 | 0.033979 62 | 0.053046 63 | 0.079880 64 | 0.116079 65 | 0.162858 66 | 0.220742 67 | 0.289281 68 | 0.366892 69 | 0.450876 70 | 0.537660
d_haut=dict((c,v) for (c,v) in d.items() if b-10<c<b+10)
for (c,v) in d_haut.items():
print(f"{c:4d} | {v:.6f}")
if (c==b-1):
print("------------------ 0,975")
70 | 0.537660 71 | 0.623222 72 | 0.703634 73 | 0.775601 74 | 0.836870 75 | 0.886430 76 | 0.924469 77 | 0.952134 78 | 0.971169 ------------------ 0,975 79 | 0.983537 80 | 0.991113 81 | 0.995477 82 | 0.997837 83 | 0.999031 84 | 0.999595 85 | 0.999843 86 | 0.999943 87 | 0.999981 88 | 0.999994