http://i.stack.imgur.com/EyqSv.png如何在python中實現生日公式?
所以,我試圖讓該爲契機,兩個人不具有相同的生日
我試圖證明上述這一公式Python代碼:
for birthday in range(365, 0, -1):
print(birthday)
這是我所有的。所以上面的公式把打印365到1,我想知道如何使它,所以它會繼續迭代 - > 365 * 364 * 363 * 362 ....等等。任何幫助讚賞。
http://i.stack.imgur.com/EyqSv.png如何在python中實現生日公式?
所以,我試圖讓該爲契機,兩個人不具有相同的生日
我試圖證明上述這一公式Python代碼:
for birthday in range(365, 0, -1):
print(birthday)
這是我所有的。所以上面的公式把打印365到1,我想知道如何使它,所以它會繼續迭代 - > 365 * 364 * 363 * 362 ....等等。任何幫助讚賞。
您可以使用reduce
和mul
從operator
模塊:
import operator
from decimal import Decimal
result = 1 - (reduce(operator.mul, range(365 - n + 1, 366))/Decimal(365.0)**n)
在Python 3 reduce
必須從functools
進口。
使用普通的Python:
def bday(n):
y = 1
for i in range(365, 365-n, -1):
y *= i/365.0
return 1 - y
使用numpy的(稍快):
import numpy as np
def bday(n):
y = np.arange(365, 365-n, -1)/365.0
return 1 - np.product(y)
365 * 364 * 363 * 364 !!! --- 363後364? – SIslam
你可以用'1.0 - np.exp(-n *(n-1)/ 730.0)'來近似它。' – gobrewers14