Posts pythonTip 57 那些年我们集过的卡片
Post
Cancel

pythonTip 57 那些年我们集过的卡片

题目描述: 不知道大家的童年有没有过和我相似的经历。我记得小时候经常买干脆面,不为别的,只是因为里面有一张人物卡片。其实有很多这样的活动都有一个相同的模式:N 种人物卡片,每次买一包干脆面随机得到一张。当你集齐这 N 种人物时,就会有相应的奖励。那时候还不懂怎么计算概率,白白给人家送了好多钱,吃了好多干脆面。现在的任务是,给你一个正整数 N (1 <= N <= 10^4),请你帮我从期望的角度计算平均需要买多少包干脆面才能集齐这 N 种人物。 提醒:由于结果可能不是整数,所以结果只保留到小数点后两位。

示例:

输入:N = 1

输出:1.00

分析:

  1. 1种卡片,怎么买都可以买到,期望就是 1
  2. 2种卡片,拿到第1种以后,拿到第2种的概率就是 1/2, 理论上还需要买2包。期望和 = 3/3 + 2/1
  3. 3种卡片, 拿到第1种以后,拿到第2种的概率就是2/3, 理论上需要买 3/2 包,再拿到第3种的概率就是 1/3 ,理论上需要买 3/1 包。 期望和 = 3/3 + 3/2 + 3/1

代码:

1
2
3
4
5
6
res = 0.0

for i in range(N, 0, -1):
    res += (N * 1.0 / i)

print("{:.2f}".format(res))
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 54 最长回文子串可不简单

pythonTip 58 切西瓜

Trending Tags