我知道这个标题有点奇怪。但这是一个统计问题,我正在努力解决,但很难解决。(不,不,这不是作业,真正的解释见底部)
前提很简单。你有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。
在你对这个想法进行过多的批评之前。请记住,如果您有庞大的大军,这类信息不能有效地存储在一个小型DB中,而且由于Web的限制,我不能同时将所有单元的数据保存在内存中。不管怎样,谢谢你的想法。
发布于 2011-04-21 10:48:48
我相信这归结为第一个桶容纳H1球的概率(因为你的概率实际上是你选择把一个球扔进去的概率)。我猜这应该可以用组合数学来解决,但这不是我的优点。
顺便提一句:这不是统计问题,而是概率问题。
发布于 2011-04-21 09:46:50
如果您可以为每个旅存储每个可能的h的有h命中的单位的nh,那么问题就变得直接了:在概率nh/N的情况下,您选择一个具有h命中的单位,然后增加nh+1和递减nh,或者如果选择h=max-1,则减少nh和N。
如果您负担不起额外的内存,则最大熵分布将是一个合理且易于处理的选择,例如,请参见这里
https://stackoverflow.com/questions/5741854
复制相似问题