在Python中遇到大数问题

在Python中遇到大数问题,python,largenumber,birthday-paradox,Python,Largenumber,Birthday Paradox,遇到以下问题: from pylab import * x=arange(0,365,1) y = [] for j in x: y.append(1-((math.factorial(365)/math.factorial(365-j))/(365**j))) plot(x,y) show() 有什么想法吗?我正在运行python 2.7,将其更改为: (math.factorial(365)/math.factorial(365-j))/long(365**j) 问题是,num

遇到以下问题:

from pylab import *
x=arange(0,365,1)
y = []
for j in x:
    y.append(1-((math.factorial(365)/math.factorial(365-j))/(365**j)))

plot(x,y)
show()
有什么想法吗?我正在运行python 2.7,将其更改为:

(math.factorial(365)/math.factorial(365-j))/long(365**j)

问题是,
numpy
尝试在除法之前将long类型转换为numpy类型,但是numpy不能这样做,因为它会导致溢出,所以numpy会抛出一个错误。如果您先转换为
long
,则除法都在
numpy
之外完成仍然足够小,可以容纳双精度浮点数,但通常,您希望简化该表达式<代码>365/(365-j)实际上只是
365-j+1
365
之间所有数字的乘积。@Acjohnson 55--这些不是我们要处理的浮点数。说得好。我想这就是问题所在。