[策划]游戏中的数学问题——奖池到底多少钱
精华修改于2018/07/295178 浏览综合
转盘活动是游戏中比较常见的一个活动形式,大家也不陌生,所以就不做介绍了。
前两天看到一个游戏中的奖励设定,有点好奇,理了一下它的逻辑,发现比想象的复杂的多,于是把模型拿出来讨论一下。
(图文无关)

正常活动设计中,为了控制产出,所有的物品都有内部的一个价值,通过每一档的总价值乘以概率,求和得出这个转盘每一次产出的平均价值。
而在我观察的这个活动中,有一档奖励为“奖池的一半”,奖池这个概念也不陌生,所以显然这个奖励的价值就是不定的,那么在活动设计时,必然需要通过一个平均值来估算它的价值。
那么,这篇帖子主要就是探讨一下这个价值该怎么判定。
先说一下这个模型大概的逻辑,因为只探究最后有多少奖励,那投入就不说明了。
【模型】
玩家每转一次,会往奖池加入9元,先加奖池再转转盘,转转盘有0.5%的概率获得“奖池的一半”,奖池初始600元。求“奖池的一半”平均多少元。
【第一次抽出的最大价值】
我的第一反应,也是最简单的一个算法。
0.5%也就是1/200,假设抽200次,最后一次中奖。
那么可以求获得的奖金数量为:
a=(600+200*9)/2=1200 元
当然问题没有这么简单,概率是随机的,不会聚集在最后一次才抽到,所以这个值是第一次可以获得的奖金的最大值。
【第一次抽出的平均价值】
在还是假设抽200次的基础上,我们枚举出每一次抽奖的奖金,最后求它的平均,则奖金应该是:

我这里是用excel拉了个表算出来的。
不过这只是第一次抽奖的值,这个问题复杂的点在于,每次抽中奖之后,奖池的初始值发生了变化,所以不能用上面的公式简单计算这个奖品的价值。
【暴力求解平均最大价值】
虽然人力计算很麻烦,但是电脑是可以进行反复计算的,于是。。。
我电话求助远方的学神,通过MATLAB编程,假定每200次抽走一半奖池,进行10,000次的模拟,对整个奖池的数据进行记录,绘制出图像。
编程:

图像:

每抽中一次奖池,奖池数量就会少一半,所以我们只需要看整个图像最下方的点拟合出的曲线就可以了。
可以看出,最终奖品趋近于一个稳定值。这个值预计在1800左右。
【暴力求解平均价值】
但是只求最大价值显然是不够严谨的,于是对原代码进行修改,加入了随机数,再跑个1,000,000次看看图像。
这里简单说明一下,代码的随机方法是,每次生成一个0到1之间的数,若这个数小于0.005,则视为中奖,当数值足够大,结果就足够稳定,近似于中奖概率为0.5%。
编程:

图像:

最后,对所有的中奖值求一次平均,就估算出这个奖池的价值会在1795左右进行波动。

【数学求解奖品价值】
学神为什么是学神!?
怎么可能只满足于暴力求解?
他最后丢给我一张图,答案揭晓。

简单分析一下,即每次开抽时,奖池的初始值,都与上一次的中奖情况有关,设第t次中奖,A(t)是第t次抽奖后奖池价值的映射,E[A(t)]是第t次中奖时。。。算了我编不下去了。
反正就是,看最后两步的计算,这个奖品的最终价值只与每次注入奖池的数量和中奖的概率有关,与初值无关。
就这个模型来看,“奖池的一半”价值为1791元。
【实际情况】
在实际的游戏设计中,官方为了配合活动,往往还会有日常奖励免费抽奖,十连抽,不同行为注入奖池不同金额等等设定。
使得实际情况会比上述模型更加复杂,而又不可能每次都进行相关分析或者求解。
所以个人认为,比较方便的方法是,在估计了奖品价值的情况下,上线试运行,记录玩家中奖数据,求实际平均得到相对精准的数据,再进行调整。或者。。。不要碰这个设定XD。
【游戏中的随机】
本篇内容主要是讨论数学上的随机计算,可能对大部分玩家来说价值没有那么高,也看不懂。
其实随机在游戏中有着非常广泛的应用,如果感兴趣,可以观看以下视频:
感谢@小怜的推荐。
终于写完啦,感谢远方学神的援助,祝在浙大没有我的日子天天开心。/斜眼笑
如果有更加高级的解法,欢迎评论区讨论。