Kopiuj
def silnia(x): return 1 if x<=1 else x*silnia(x-1)
def newton(n,k): return (int)(silnia(n)/(silnia(k)*silnia(n-k)))
def p(all,marked,all_chosen,marked_and_chosen):
return newton(all-marked,all_chosen-marked_and_chosen)*newton(marked,marked_and_chosen)/newton(all,all_chosen)
for x in range(8):
print("for x=",x," p(10,4,7,x)=",p(10,4,7,x))
Ten program wypisze:
Kopiuj
for x= 0 p(10,4,7,x)= 0.0
for x= 1 p(10,4,7,x)= 0.03333333333333333
for x= 2 p(10,4,7,x)= 0.3
for x= 3 p(10,4,7,x)= 0.5
for x= 4 p(10,4,7,x)= 0.16666666666666666
for x= 5 p(10,4,7,x)= 0.0
for x= 6 p(10,4,7,x)= 0.0
for x= 7 p(10,4,7,x)= 0.0
Interesujəcy Cię przypadek to ostatni wynik - p(10,4,7,7), rzeczywiście to niemożliwe. Ciekawe jest też, że nie może to być sześć oznaczonych karpi, ani pięć. Gdybyśmy na siedem wylosowanych mieli dokładnie sześć oznaczonych, tyle ich nie ma. Podobnie gdybyśmy na siedem wylosowanych mieli dokładnie pięć oznaczonych - to też jest niemożliwe.