如何将生日公式实现为python?

时间:2015-10-20 05:03:52

标签: python python-3.x

http://i.stack.imgur.com/EyqSv.png

所以,我正在尝试制作一个python代码来证明上面这个公式的合理性是因为两个人没有相同的生日

我的尝试:

for birthday in range(365, 0, -1):
    print(birthday)

这就是我得到的全部。所以上面的公式把打印365到1,我想知道我怎么能这样做它所以它将继续迭代 - > 365 * 364 * 363 * 362 ....等等。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

您可以使用reduce模块中的muloperator

import operator
from decimal import Decimal
result = 1 - (reduce(operator.mul, range(365 - n + 1, 366)) / Decimal(365.0)**n)

在Python 3中reduce必须从functools导入。

答案 1 :(得分:0)

使用plain 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)