作为我当前项目的一部分,我需要为以下内容找到一个非常好的Excel解决方案:人们获得经验的在线游戏(类似于SO代表)并尽快进入下一级别获得(再次,这非常像SO特权)。当然这需要每个人不同的时间:一些人在第一周获得足够的exp,其他人需要5周才能通过这个级别。统计数据如下:
Week from join: Week 1 Week 2 Week 3 Week 4 Week 5
Level up: 5% 15% 40% 30% 10%
也就是说,如果在本周我们有一些人加入游戏,5周后所有人都会进入下一个级别(有些人会放弃并离开,但为了简单起见,我不会在条件清单。)
至于每场比赛,现有球员的数量都很重要。为了让游戏保持流行和令人兴奋,每个级别的玩家应该有明确的最小数量。显然,这个价值在不断变化:新人来了,而其他人则进入了一个新的水平。然而 - 那就是行动的开始! - 这个当前玩家的最小值不是恒定的,并且可能会因许多因素而变得谨慎。简单来说,这意味着在未来的10-15周内,每周应该实现一组预测的最小玩家数量(这是基于收集的统计数据,但对于给定的任务,这是一个已知设置)。
到目前为止,图片看起来很像:
虽然在最左边的列中有很多人每周加入游戏,但每周下面的一行粗体数字是在本周内传递到下一个级别的人数< /强>
拥有大量的新人,每周总得分水平的计算是微不足道的。相反的情况并非如此简单(好吧,至少对我来说) - 这就是问题:如何预测每周所需的新人数(最左边一栏) - 获得所需在接下来的几周内将会传递到下一级别的人数(底部的粗体行)?
到目前为止,我仍然无法找到适当且准确的解决方案2周。我尝试了所有可能的选择 - 复杂和放大数组公式为Solver addin,但没有运气:我总是有比方程更多的未知数。但是,我非常确定这不是一项不可能完成的任务:对于某些解决方案,Solver可以提供非常接近所需数字的数字,但不能提供所有期望值。
一些假设和(或许)重要条件:
less than desired
人加入了游戏,这将影响未来几周的计算预测,以实现整体效果。至于我在这里的每一个问题 - 我都不会要求ready to play
解决方案,但非常感谢正确的指导或宝贵的建议。我故意不把它发布到https://stats.stackexchange.com/ - 它更像是编程问题,因为理论显然很简单......或者说太简单了,所以我不会看到非常明显的解决方案。
请随时通过评论请求任何其他详细信息或解释:虽然我尽量清楚简单,但对我来说不重要的某些方面对于准确的解决方案可能至关重要。
示例文件(包含上面的示例):https://www.dropbox.com/s/q3bnagyet86i34r/StatPrognosis01.xlsx
答案 0 :(得分:1)
不需要VBA或复杂的数组公式 - 只需要一些转换为公式的简单数学:
主要思想是,您可以通过“反转”计算来确定每周的数量。逻辑如下:(注意:基于屏幕截图的单元格引用,即黄色5%将是B2):
=B12
,A5:=B5/B2
=C12-C5
,A6:=C6/B2
现在,您可以使用一些INDEX函数对此进行概括,而不是为每周创建单独的公式。为此,我将您的示例扩展为周数作为标题列和行:
要计算每个“每周木匠波”的数量,即范围C5:O17,请使用以下公式:
=IF($A5>C$4+N("Nobody from this wave joined yet:"),0, IF(C$4=$A5+N("The first week for the new wave:"), IF($A5=1+N("Very first wave must be expected number in this week:"),C18, N("All other weeks, this must be expected number minus 'levelups' from former weeks:")+(C$18-SUM(C4:C$5)) ), N("For any later week after the joining, apply weekly uplevel ratio to total number of joiners:")+INDEX($C$2:$O$2,C$4-$A5+1)*$B5) )
和每周所需的连接数,即范围B5:B17:
=INDEX($C5:$O5,$A5)/$C$2
这是更新的solution file!