binomiale.py

Created by patrice-buttay

Created on May 16, 2018

805 Bytes

Coefficients binomiaux, loi binomiale


#!/usr/bin/python
# -*- coding: utf-8 -*-

def coef_bin(k,n):
    if (k==n)or(k==0):
        return 1
    elif (k==1)or(k==n-1):
        return n
    else:
        C=1.0
        for i in range(k):
            C*=(n-i)/(k-i)
        return C

def binom(k,n,p):
    q=1-p
    if (p==0.0)or(q==0.0):
        return 0.0
    elif k==0:
        return q**n
    elif k==n:
        return p**n
    elif k==1:
        return n*p*q**(n-1)
    elif k==n-1:
        return n*q*p**(n-1)
    else:
        P=q**(n-2*k)
        for i in range(k):
            P*=p*q*(n-i)/(k-i)
        return P

def binom_cumul(k,n,p):
    P=0.0
    if k<=(n//2):
        for i in range(k+1):
            P+=binom(i,n,p)
    else:
        for i in range(k+1,n+1):
            P+=binom(i,n,p)
        P=1-P
    return P