당신은 exact
KWD로 scipy.special.comb
를 사용하여 교체 할 수 있습니다 * 대형^(- 1) 대형 /과 :
(3**100)/(4**88)
# 5.380792381981753e-06
:
import scipy.special
x=2000
n=range(8,x+1)
q=[]
for i in range(0,len(n)):
q.append(((n[i]-6)*26**(n[i]-7)-scipy.special.comb(n[i]//7+n[i]%7,n[i]//7, exact=True))/(26**n[i]))
print(q[-10:])
# [2.47142295e-07, 2.4726679994684175e-07, 2.473913048813568e-07, 2.4751580981587185e-07, 2.4764031475038685e-07, 2.477648196849019e-07, 2.478893246194169e-07, 2.4801382955393194e-07, 2.4813833448844694e-07, 2.48262839422962e-07]
부문 자체가 문제가 될 것 같지 않습니다 참고 : 위 코드는 Python3에 적용됩니다. int 사이의 Python2 나눗셈에서는 int를 반환합니다. 당신은 __truediv__
q.append(((n[i]-6)*26**(n[i]-7)-scipy.special.comb(n[i]//7+n[i]%7,n[i]//7, exact=True)).__truediv__((26**n[i])))
를 사용하거나
from __future__ import division
어쩌면 당신이 여기처럼 사용자 정의 구현에 찬성 이항 계수를 scipy''드롭 할 수있는 미래의 수입 사용할 수 있습니다 : https://stackoverflow.com/questions를/26560726/python-binomial-coefficient. 정수를 사용하는 것 같습니다. –
고마워,하지만 이항 계수에 문제가있는 것 같지도 않지만 26 – user4288514
의 힘으로 보이기 때문에 'scipy'를 사용하지 않고 [mcve]를 만들 수 있습니다. 그렇게하면 더 많은 답변을 얻을 수 있습니다. –