import numpy as np
Poisson = lambda L,k: np.exp(k * np.log(L) - np.sum(np.log(np.arange(1,k+1))) - L)
Binomial = lambda p,n,k: np.exp(np.sum(np.log(np.arange(1, n+1))) - np.sum(np.log(np.arange(1, k+1))) - np.sum(np.log(np.arange(1,n-k+1))) + k*np.log(p) + (n-k)*(np.log1p(-p)))
# 2 年遇到 2 次 50 年一遇暴雨
print(Poisson(2*(1/50),2))
print(Binomial(1/50,2,2))
# 30 年遇到 4 次 50 年一遇暴雨
print(Poisson(30*(1/50),4))
print(Binomial(1/50,30,4))
# 800 年遇到 17 次 1000 年一遇暴雨
print(Poisson(800*(1/1000),17))
print(Binomial(1/1000,800,17))
aW1wb3J0IG51bXB5IGFzIG5wCgpQb2lzc29uID0gbGFtYmRhIEwsazogbnAuZXhwKGsgKiBucC5sb2coTCkgLSBucC5zdW0obnAubG9nKG5wLmFyYW5nZSgxLGsrMSkpKSAtIEwpCkJpbm9taWFsID0gbGFtYmRhIHAsbixrOiBucC5leHAobnAuc3VtKG5wLmxvZyhucC5hcmFuZ2UoMSwgbisxKSkpIC0gbnAuc3VtKG5wLmxvZyhucC5hcmFuZ2UoMSwgaysxKSkpIC0gbnAuc3VtKG5wLmxvZyhucC5hcmFuZ2UoMSxuLWsrMSkpKSArIGsqbnAubG9nKHApICsgKG4taykqKG5wLmxvZzFwKC1wKSkpCgojIDIg5bm06YGH5YiwIDIg5qyhIDUwIOW5tOS4gOmBh+aatOmbqApwcmludChQb2lzc29uKDIqKDEvNTApLDIpKQpwcmludChCaW5vbWlhbCgxLzUwLDIsMikpCgojIDMwIOW5tOmBh+WIsCA0IOasoSA1MCDlubTkuIDpgYfmmrTpm6gKcHJpbnQoUG9pc3NvbigzMCooMS81MCksNCkpCnByaW50KEJpbm9taWFsKDEvNTAsMzAsNCkpCgojIDgwMCDlubTpgYfliLAgMTcg5qyhIDEwMDAg5bm05LiA6YGH5pq06ZuoCnByaW50KFBvaXNzb24oODAwKigxLzEwMDApLDE3KSkKcHJpbnQoQmlub21pYWwoMS8xMDAwLDgwMCwxNykpCg==