游戏设计中的算法题——计算宝物升级所需的资源数
当今社会,智能手机的飞速发展。使得可以做到人手一部智能手机。而各种应用层出不穷。
手游(手机游戏)的出现,满足了人们对打发碎片时间的需求。
而在游戏中,宝物升级是最常见的剧情元素之一。而优秀的游戏设计师,在设计宝物升级系统时,要难易适中,要能把用户黏合在自己的游戏中,既不能太难,也不能太简单。那么如何设计宝物升级中的各项参数就是重中之重。
本文重点介绍,给定宝物的设计系统的各项参数,计算宝物升级所需的资源数。
问题:
某宝物初始是0级,现在要升级
从0级升到1级,所需的资源数为1,成功概率为90%,成功升1级,失败还是0级;
从1级升到2级,所需的资源数为2,成功概率为80%,成功升1级,失败降1级,降为0级;
从2级升到3级,所需的资源数为3,成功概率为70%,成功升1级,失败降1级,降为1级;
从3级升到4级,所需的资源数为4,成功概率为60%,成功升1级,失败降1级,降为2级;
从4级升到5级,所需的资源数为5,成功概率为50%,成功升1级,失败降1级,降为3级;
问:某宝物从0级升级到5级,所需要的资源数平均是多少?
定义一个函数F(N,M),M≥N。表示该宝物从N级升级到M级所需的平均资源数。本题中就是计算F(0,5)
很明显
F(N,N)=0;即F(0,0)=0,F(1,1)=0
F(N,M)=F(N,K)+F(K,M),N≤K≤M,F(0,4)=F(0,2)+F(2,4),即F(2,4)=F(0,4)-F(0,2)
用简便表示函数F(N),即F(N)=F(0,N),那么本题就是计算F(5)
定义PN,为从N-1级升到N级的成功的概率
本题中,P1=0.9,P2=0.8,P3=0.7,P4=0.6,P5=0.5
定义LN,为从N-1级升到N级所需的资源数
本题中,N1=1,N2=2,N3=3,N4=4,N5=5
言归正传,下面分析如何计算F(N)
先分析F(1)
从0级升到1级,所需的资源数为L1。其中(1-P1)的会失败,还是停留在0级,这些还是需要从0级升到1级。那么,就有个分析公式
F(1)=L1+(1-P1)×F(1)
F(1)=L1÷P1=1÷0.9=1.111
再分析F(2)
从1级升到2级,所需的资源数为L2。其中(1-P2)的会失败,降级到0级,这些还是需要从0级升到2级。那么,就有个分析公式
F(2)=F(1)+L2+(1-P2)×F(2)
F(2)=(F(1)+L2)÷P2=(1.111+2)÷0.8=3.889
再分析F(3)
从2级升到3级,所需的资源数为L3。其中(1-P3)的会失败,降级到1级,这些还是需要从1级升到3级。那么,就有个分析公式
F(3)=F(2)+L3+(1-P3)×F(1,3)
F(3)=F(2)+L3+(1-P3)×(F(3)-F(1))
F(3)=(F(2)+L3-(1-P3)×F(1))÷P3
F(3)=(3.889+3-(1-0.7)×1.111)÷0.7=9.365
再分析F(4)
从3级升到4级,所需的资源数为L4。其中(1-P4)的会失败,降级到2级,这些还是需要从2级升到4级。那么,就有个分析公式
F(4)=F(3)+L4+(1-P4)×F(2,4)
F(4)=F(3)+L4+(1-P4)×(F(4)-F(2))
F(4)=(F(3)+L4-(1-P4)×F(2))÷P4
F(4)=(9.365+4-(1-0.6)×3.889)÷0.6=19.682
再分析F(5)
从4级升到5级,所需的资源数为L5。其中(1-P5)的会失败,降级到3级,这些还是需要从3级升到5级。那么,就有个分析公式
F(5)=F(4)+L5+(1-P5)×F(3,5)
F(5)=F(4)+L5+(1-P5)×(F(5)-F(3))
F(5)=(F(4)+L5-(1-P5)×F(3))÷P5
F(5)=(19.682+5-(1-0.5)×9.365)÷0.5=39.999
结论是
从0级升到1级,平均所需的资源数为P(1)=1.111
从0级升到2级,平均所需的资源数为P(2)=3.889
从0级升到3级,平均所需的资源数为P(3)=9.365
从0级升到4级,平均所需的资源数为P(4)=19.682
从0级升到5级,平均所需的资源数为P(5)=39.999
下面是通过计算机模拟宝物升级的过程,并做了统计,再求平均数。一共做了五组,每组1000000次。
理论值 | 第1组 | 第2组 | 第3组 | 第4组 | 第5组 | |
P(1) | 1.111 | 1.111 | 1.111 | 1.111 | 1.111 | 1.111 |
P(2) | 3.889 | 3.889 | 3.890 | 3.890 | 3.889 | 3.889 |
P(3) | 9.365 | 9.367 | 9.365 | 9.368 | 9.363 | 9.364 |
P(4) | 19.682 | 19.685 | 19.690 | 19.692 | 19.681 | 19.682 |
P(5) | 39.999 | 40.000 | 40.002 | 40.001 | 39.996 | 39.988 |
从上表的数据来看,理论值和实际统计值差别不大了。说明我们分析的理论值是合理的。
综述:
F(1)=L1÷P1
F(N)=(F(N-1)+LN-(1-PN)×F(N-2))÷PN,当N≥2时。
再给一题:
某宝物初始是0级,现在要升级
从0级升到1级,所需的资源数为1,成功概率为100%,成功升1级;
从1级升到2级,所需的资源数为2,成功概率为85%,成功升1级,失败不降级;
从2级升到3级,所需的资源数为3,成功概率为75%,成功升1级,失败不降级;
从3级升到4级,所需的资源数为4,成功概率为65%,成功升1级,失败不降级;
从4级升到5级,所需的资源数为5,成功概率为55%,成功升1级,失败降1级,降为3级;
从5级升到6级,所需的资源数为6,成功概率为45%,成功升1级,失败降1级,降为4级;
从6级升到7级,所需的资源数为7,成功概率为35%,成功升1级,失败降1级,降为5级;
从7级升到8级,所需的资源数为8,成功概率为25%,成功升1级,失败降1级,降为6级;
从8级升到9级,所需的资源数为9,成功概率为20%,成功升1级,失败降1级,降为7级;
从9级升到10级,所需的资源数为10,成功概率为15%,成功升1级,失败降1级,降为8级;
问:某宝物从0级升级到10级,所需要的资源数平均是多少?
你的答案是多少?我的答案是7763.564285
转载于:https://www.cnblogs.com/grenet/p/4303266.html
游戏设计中的算法题——计算宝物升级所需的资源数相关推荐
- 手把手教你架构3d游戏引擎pdf_游戏开发中的算法
游戏技术这条路,可深可浅.你可以满足于完成GamePlay玩法层面的东西,你也可以满足于架构和框架设计层面的东西,你也可以醉心于了解某一游戏引擎带来的掌控感.但是,我们不该止步于此,止步与目前所见或所 ...
- 人工智能在游戏设计中的应用
人工智能游戏的快速发展,为计算机游戏产业提供了新的机遇,目前人工智能技术已经成为优秀计算机游戏开发中不可缺少的部分. 这里首先介绍人工智能游戏的概念以及基本的游戏人工智能技术,然后介绍游戏角色的指导与 ...
- 斗牛怎么玩法算法_游戏开发中的算法
游戏技术这条路,可深可浅.你可以满足于完成GamePlay玩法层面的东西,你也可以满足于架构和框架设计层面的东西,你也可以醉心于了解某一游戏引擎带来的掌控感.但是,我们不该止步于此,止步与目前所见或所 ...
- Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(
2019独角兽企业重金招聘Python工程师标准>>> 在Java ME游戏开发中,碰撞检测算法在Java?ME中的实现(百搜技术) 在Java ME游戏开发中,经常需要进行碰撞检测 ...
- vista下载_Vista和视图在游戏设计中的功能
vista下载 Views in video games are observation points used to highlight a lot of objects into one fram ...
- 游戏脚本在移动游戏设计中的作用_游戏设计中道具设计分步解说
首先 小编姐姐先跪谢我们原画老师 "您辛苦了" 这次给大家带来了 游戏设计中的 道具设计分步解说图 ▼▼▼ 先来看看动态过程图 ▼▼▼ 再看看详细过程图 一 草图构思,参考一些相关 ...
- vue列表长度限定_游戏设计中的中英文名称可输入/显示长度规范探究
大家好,我是游戏交互设计师懒蚂蚁GM~ 我们刚接触一款新游戏时,一般都会创建一个让自己满意的游戏角色,然后将自己的情感和行为映射到这个角色身上,以这个角色的身份去和虚拟的游戏世界进行互动.那么,我们在 ...
- 手机社交游戏设计中交互理念的渗透
文/郑金条 延长玩家与游戏的生命周期 我从游戏设计中了解最多的除了游戏本身的机制效能,就是游戏化概念对其他产品价值及其衍生属性的影响.从本质上讲,游戏所提供的就是虚拟性的服务,而这层服务从用户获得体验 ...
- 算法—2,记一个自己的算法题 计算数字k在0到n中的出现的次数,k可能是0~9的一个值
3 计算数字k在0到n中的出现的次数,k可能是0~9的一个值 例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1 ...
最新文章
- Array.prototype.map() 、 Array.prototype.reduce()、Array.prototype.filter()
- 公司--As Imp的写法
- android ImageButton显示本地图片
- 【安全漏洞】Resin解析漏洞分析
- 斑马Zebra驱动下载
- python 数据库查询系统_python查询数据库操作系统
- linux学习查看日志命令
- el表达式 多条件判断
- Java如何将Ftp文件解压_ftp解压工具,ftp解压工具在java环境下配置其连接
- 应用内广告帮助乐易实现收入+玩家时长双丰收
- 接口测试要测试什么?
- 端口 0-65536 TCP和UDP端口的区别
- percona mysql 编译参数_Linux 下编译安装 MySQL(Percona Server) 5.6
- android webview 跳转到浏览器,Android WebView或手机浏览器打开连接问题解决办法总结...
- 小刘同学的第一百五十五篇日记
- 单纤双向(Bidi)是如何实现的?会在5G前传中占一席之地吗?
- 用批处理文件把.txt后缀的文件全部换成其他后缀文件
- Linux信号:SIGCHLD信号和僵尸进程
- c语言扫雷游戏计时功能_做游戏,学编程(C语言) 20 扫雷
- win10磁盘分区解决方案
热门文章
- 使用CXF 2.7.5出现的java.lang.RuntimeException: Cannot create a secure XMLInputFactory错误解决...
- CSS基础---日记4
- jquery常见获取高度
- 网页动画结束判断事件
- 《软件架构师的12项修炼》读书笔记-技术之天花板
- Lesson_7 上课笔记_1 ----static关键字和导包
- ostu进行遥感图像的分割
- html5跨域通讯之postMessage的用法
- 挺水的一门课,发现全系都过了,就自己挂了,这是一种什么样的感觉呢?
- 使用date命令,进行时间戳和日期时间的互转