球桶,如果我添加另一个球,是否会填满?

时间:2011-04-21 09:02:21

标签: algorithm math statistics probability

我意识到标题有点奇怪。但这是一个我想弄清楚的统计问题,但我很难过。 (不,不,它不是作业,看到底部的真实解释)

前提很简单。你有N桶。每个水桶都可以容纳H球。没有一个桶是满的。你已经把D球放在水桶里了,但你不知道球在哪里(你忘记了!)你随机选择一个水桶来增加一个球。那个桶满载的概率是多少。

一些可能的示例图,N = 4,H = 3,D = 4.每种情况只是球的假设排列。对于许多案例中的一个。

Scenario 1: 1 bucket could be filled.
|   |   |   |   |
+ - + - + - + - +
| B |   |   |   |
+ - + - + - + - +
| B | B |   | B |
+ - + - + - + - +

Scenario 2: 2 buckets could be filled.
|   |   |   |   |
+ - + - + - + - +
|   | B | B |   |
+ - + - + - + - +
|   | B | B |   |
+ - + - + - + - +

Scenario 3: 0 buckets could be filled.
|   |   |   |   |
+ - + - + - + - +
|   |   |   |   |
+ - + - + - + - +
| B | B | B | B |
+ - + - + - + - +

问题是我需要P = f(N,H,D)形式的通用方程式


好吧,你已经调整了这么远。这个数学查询背后的原因是,我很好奇在单位之间进行大规模的战斗。每个单位都可以属于一个包含许多相同类型单位的旅。然而,随着时间的推移,战斗将进展缓慢。在战斗的每个阶段,状态将保存到DB。我没有为每个单位保存每个单位和每个生命值,而是希望节省旅团的单位数量和总伤害。当一个旅加上伤害时,f(N,H,D)就会运行并返回该旅中一个单位被摧毁的几率(所有的HP都用完了)。然后,这将该部队从N减去1,D减去H。

在你开始批评这个想法之前。请记住,如果您拥有VAST VAST大型军队,这种信息无法有效地存储在小型数据库中,并且由于Web的限制,我无法同时保留内存中所有单元的数据。无论如何,感谢您的想法。

2 个答案:

答案 0 :(得分:1)

我相信这可以归结为第一个水桶装H-1球的可能性(因为你的概率实际上是你选择将球投入球的概率是H-1球。 我猜这应该可以用组合学来解决,但是,这不是我的强项。

作为旁注:这不是统计问题,而是概率问题。

答案 1 :(得分:0)

如果你有能力为每个旅存储每个可能h的h次单位数n [h],那么问题会变得简单:概率为n [h] / N你选择一个h点击的单位,然后递增n [h + 1]并递减n [h],或者如果你选择了h = max-1,则递减n [h]和N.

如果您无法承受额外的记忆,那么合理且易于理解的选择就是最大熵分布,例如here