mud_sanc 板


LINE

假设一只怪物,会掉 a 物品 k%, b 物品 m%, c 物品 n% 一、k + m + n 不一定要等於 100 二、判断时没有一定的标准顺序。 以上面来看,较简易的写法就是... drop_chance = ({"a物品", k, "b物品", m, "c物品", n }) j=sizeof(drop_chance); for(i=0;i<j;i=i+2) { if(random(100)<drop_chance[i+1]) { 执行 drop_chance[i] 物品的掉落; break; // 跳出回圈 } } 这样的设定方式,好处是较容易掉的东西本来就应该挪到越前面判断, 而越难掉的东西挪到越後面就越难取得(因为它要经过几次的回圈)。 而实际取得机率应该会是曲线递减式,即设定越前面的物品其取得机率 期望值其实大於设定值,而设定越後面的物品之取得机率期望值其实小 於设定值(例如设在第 5 件的物品设取得机率 10%,实际上「极小於10 %」) 例子.. drop_chance = ({"a物品", 50, "b物品", 30, "c物品", 10 }) 则只有 a 物品的取得机率是 50%,b 物品则是 (1-50%) x 30% = 15% ,c 物品则是 (1 - 50%) x (1 - 30%) x 10% = 3.5% 因此,假若我们希望 b 物品依旧是 30%,c 物品依旧是 10%,则要使 用反设定.. 若 b 物 30% = (1 - 50%) x m% ==> m = 60 若 c 物 10% = (1 - 50%) x (1 - 60%) x n% ==> n = 50 也就是实际上要这样子设.. drop_chance = ({"a物品", 50, "b物品", 60, "c物品", 50 }) 但是实作上,还是要以方便设定者为主,也就是说当设定者设 50,30, 10 时,其真实机率也应该是 50, 30, 10。 j=sizeof(drop_chance); total=100; for(i=0;i<j;i=i+2) { k=drop_chance[i+1]; if(random(total)<k) { 执行 drop_chance[i] 物品的掉落; break; // 跳出回圈 } total=total-k; } 第一轮时:random(100) < k=50 才会掉 a 物 第二轮时:random(50) < m=30 才会掉 b 物 (实际机率 (1-50%)x60% = 30% ) 第三轮时:random(20) < m=10 才会掉 c 物 (实际机率 (1-50%)x(1-60%)x50% = 10% ) 这个我看晚上有没有空完成。(今天一整天都在公司忙) 届时这个也一并交给 highelf 管理,怪物掉落物系统与虚拟物品系统 结合後,就可以模拟 RO 的怪物掉落物品,初期会先选几个区域来测 试。 Laechan --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.131.227.206
1F:→ laechan :对了补充一下,掉落机率应该会用千趴来算 01/16 17:08
2F:推 bahatest :靠单次random值决定掉落物的设定有那里不好吗? 01/16 17:18
3F:→ laechan :比较难改成「设定式」,你的方式比较适合程式撰写 01/16 17:20
4F:→ laechan :(就是用 select case 的方式去做) 01/16 17:20
5F:→ laechan :但如此一来1000只怪物就要写1000个这样的筛选程式 01/16 17:21
baha 所举的方式类似底下... select(random(100)) { case 0..49: 掉 a 物; break; case 50..79: 掉 b 物; break; case 80..89: 掉 c 物; break; } 一、1000只怪物,得写 1000 个上面的东西。 二、它不容易扩充。例如说我们要为这怪物「再加上两项物品」,   为此得去改程式,并重新计算 m..n 的数值。 三、它也不容易管理。为什麽呢?因为你无法写程式去读「某怪物   掉的 a 物品的机率是多少」。 四、实务上,最容易掉的东西是 a 物品,所以只要越高机率的物品   挪到越前面,回圈实际被执行的次数,在大部份的情况下就会集   中在 1~2 次(例如以上例,80% 的机率只会执行最多 2 次),而   且怪物的阵亡频率也在可接受范围内。 以後用物件式是主流,因为以後不希望收了 wiz 之後该 wiz 还得花 时间在程式写作上,以後应该减少写程式的情况,要尽量多以物件资 料的管理为主。 Laechan ※ 编辑: laechan 来自: 220.131.227.206 (01/16 17:28)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP