gpt4 book ai didi

python - 开奖概率Python代码

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:47 25 4
gpt4 key购买 nike

我正在编写代码来解决这个问题:

您和您的 friend 在纽约,正计划去看一场百老汇音乐剧。不幸的是,纽约就是纽约,门票有点贵。但是其中一个节目每晚都有彩票,像你这样的穷人有机会赢得购买稍微便宜一点的好座位门票的权利。彩票运作如下。首先,所有感兴趣的人都进入彩票。然后,抽取 n 位幸运儿,每人最多购买 t 张门票。

给定你组中的人数 p(全部进入抽奖)和进入抽奖的总人数 m,你能为整个组抽到票的概率是多少?假设从参与抽奖的m人中均匀随机抽取n名幸运儿,每人最多中奖一次。

这是我的代码:

import math

def lottery():

m = int(raw_input('The number of people who entered the lottery: '))
n = int(raw_input('The number of winner drawn from the total: '))
t = int(raw_input('The number of tickets each winner can purchase: '))
p = int(raw_input('The number of people in your group: '))

def combinations(n, k):
if 0 <= k <= n:
ntok = 1
ktok = 1
for t in xrange(1, min(k, n - k) + 1):
ntok *= n
ktok *= t
n -= 1
return ntok // ktok
else:
return 0

needed_wins = int(math.ceil(p/t))

others = m - p

loss = 0
for i in range(needed_wins):
loss += combinations(others, n-i) * combinations(p, i)

total = combinations(m, n)

prob = 1 - loss / total

print(prob)

我尝试运行它,但结果是错误的。例如组合为(100,10,2,1),则结果应为0.1;相反,它返回了 1。如果有人能帮助我,我真的很感激。

最佳答案

在 Python 2 中,当您将两个整数相除时,您总是会得到一个整数结果。尝试将此行添加到文件顶部,这将为您提供新的 Python 3 行为,其中除以整数会产生 float :

from __future__ import division

关于python - 开奖概率Python代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14016409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com