ZKX's LAB

为什么有程序员都说取的随机数是伪随机数 游戏强化系统随机数

2020-07-20知识6

游戏里的随机真的是随机吗? 题主玩DNF,对于强化增幅很是喜爱,但是关于其中的几率,谁玩谁知道,为了提高所谓的成功率,大部分玩家…游戏策划面试时问了很多 MMORPG 的问题,是否从事游戏策划必须要懂 MMORPG? 面试了几家游戏公司的策划职位。无一例外不停的问我MMORPG的相关知识,让我评价一个系统什么的。但我就是…网络游戏中的强化等级是通过什么程序体现的 本机客户端强化,数据包发送至服务器,服务器判定成功与否,将信息返回到客户端,客户端反应出是闪耀的光芒还是强烈的光芒。但关键是服务器端,是如何判定成功还是失败的(即2进制1或者0)一种办法是每次客户端有请求,服务器产生一个伪随机数,然后根据总体概率做一个数学运算得出结果,(最简单如果50%总体概率,就把随机出除以2,余数1成功,余数2失败)但这个办法有一个很大的问题,客户端同时需要判定随即概率的事情太多了,强化技能,强化装备,打怪掉落,打怪钱掉多少,如果每个都判定,服务器压力非常大,这样绝对不是一个程序员会采用的算法。所以,个人认为,一个理想的算法是随机数表,服务器定时(比如每天0点)产生一张很大伪随机数表,比如50%的表,就是0和1各占一半的一张可能有几百上千万个0和1的表格,其实这个表格很小,1个0和1只占1个bit,8个bit才是一个byte,800万个0和1的表格也只有1MB那么大。然后,每次有请求上传到服务器,服务器按序列取伪随机数表比如0点0分伪随机数表产生 开头是 0 0 1 1 1 0 1 1…0点0分01秒,某玩家强化技能,随机数表取0,于是这个倒霉的家伙技能强化失败0点0分02秒,某玩家打怪,随机数表取0,于是怪物没有掉落。为什么有程序员都说取的随机数是伪随机数 你想每次点酒都是杜康吗?你想每次强化都上吗?你想每次抢到的粮贼都是真身吗?(哇,好有吸引力,好激动呢!说实话我一直都很想写写这个主题了。大神说速度慢点酒会有更高的概率得到杜康;有人还说看系统提示,当前面的人失败概率大的时候,我们这个时候强化的成功率最高;更有人说,守粮的时候第二次出现真身的地方在上一次出现的地方概率大。好吧,总总言论都是各种大神的经验。比如最后一条就是守粮大神。那么请让我们走进科学,用几个身边常见的事例告诉你,你 真(想)可(多)爱(了)。概率论科普:游戏里的所有过程都是用代码写的,都是符合计算硬件机运行规则的,这样说好像太装b,换句话就是,游戏代码都是符合数学规律的。数学规律符合自然规律。而比如我们这里的概率问题,就是用到了伪随机数,所谓的伪随机数,你就可以认为是自然界里的随机数。事例1.1,抛一枚硬币,得到正反两面的概率我们都认为是二分之一,那么问题来了,假如你前面抛硬币9次都是反面,你第十次抛到反面的概率是多大?事例1.2;硬币,和上面一样的硬币,一样的抛法,你连续抛10次都是反面的概率是多大?和上面的结果一样吗?事例2.1,你姑妈要生孩子,前面有三个女孩子了,你姑妈。网游公司对玩家强化装备的成功率一般是怎么设计和控制的? 实现上有两种方式:1)根据强化几率的表格读取指定等级成功率;2)根据策划提供的公式直接算出对应的成功率。实际玩家在游戏中可能被影响的其他因素:1、其他条件。如不会首次失败、如果X次不成功必定成功等;隐藏属性 2、服务器全局参数。如国家科技等级X级使强化率提升Y、强化祝福使成功率上升等等;公开属性 3、虚假显示。系统提示给玩家的概率并非真实概率(反正是随机,看不出来);隐藏属性 4、运营手动调整。在网游发展早期经济系统设计不太完善的年代,为了防止玩家快速玩通,运营人员可能根据服务器内玩家整体强化等级情况,在服务器维护时偷偷调低几率。通常和第3条配合;隐藏属性 5、程序bug。如果程序存在bug,一切都有可能发生。但通常是整体的几率上浮、下降或者溢出。但这种bug的触发一定是基于某种事件,比如活动开启、版本更新、服务器维护、功能激活等。不可知属性 6、上帝。因为计算机的随机并非纯随机,与系统时间关联,所以上帝掷骰子的时候手滑会产生看上去不太随机的效果。不可控属性 因此可以得知,当隐藏属性1存在时,垫装备是有意义的。但不幸的是,真正去这么做的很少,通常游戏都会用祝福值、兑换值、碎片等方式来达成。所以真正能通过。

#网游#概率计算

qrcode
访问手机版