在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--这些不是我们要处理的浮点数。说得好。我想这就是问题所在。