概率问题
-
有没有直接的概率设计能让多个事件在100%里面做分配
例如(20-x)%A(20+2x)%B15%C5%D(整体在100%内)
否则E
事件本身也有点长。如果用系统的概率要链接否则整体会很长。
因为项目原因超过了子事件限制的8个(我也不记得是几个了)
不知道有没有好的方法
-
@maker发 其实“否则”是可以在同级写条件的,不一定要写到子级,例如:
事件1:条件a
事件2:否则+条件b
事件3:否则+条件c
……
在否则的同条件框里写即可(但否则要放在条件框的最上一个条件),可以不用特定写到子级里,所以事件深度应该不是主要问题
另外一般否则链写这么长的情况,比较推荐用分支选择组件的,但考虑到你可能是用概率组件(“系统的概率”这个描述比较模糊)做的随机,可能不用分支选择组件倒也好梳理逻辑一点
回到你的问题,有没有直接的概率设计让多个事件在100%里分配,这个应该是没有的(反正我没找到),不然我就不自己设计事件了
设计的思路可能大家各有千秋,我的设计思路是下面这样的:
随机一个100以内的随机数,判断这个随机数在哪个区间中
为了事件写起来整洁且方便调整一点,我会用分支选择组件+局部变量,
先确定好随机的档位,假设是5个档位,那么就设置四个局部变量作为要填入的概率值(就像你说的例如 10%A、10%B、15%C、15%D,剩下的一个档位概率就是100%减去前四个档位后的概率)
然后用选择分支的条件Switch 一个 random(100)
然后若干子事件,用选择分支的条件 case范围:
第一个子事件 case范围 0到局部变量A
第二个子事件 case范围 局部变量A到(局部变量A+局部变量B)
第三个子事件 case范围 (局部变量A+局部变量B)到(局部变量A+局部变量B+局部变量C)
第四个子事件 case范围 (局部变量A+局部变量B+局部变量C)到(局部变量A+局部变量B+局部变量C+局部变量D)
第五个子事件 用条件 默认case
结构就完成了(另外需要注意如果switch的值可能中途变更或是担心随机数刚好等于两个范围的交界值这种几乎很难触发的情况的话,每个子事件的后续动作部分记得加一个“跳出”动作)
其实这种思路还是基于你现有的思路来处理的,包括事件表结构也是,这个方式虽然好理解,但就如你看到的,如果分出的档位很多很多,写起来是很麻烦的,所以一般只适合较少的档位数的情况来用。
如果是档位数很多很多的情况,其实用数组+动作组来设计可随时调用的概率判断通用事件比较好,这个我记得有其他朋友做出过范例,但忘记在哪看到的了,然后也不是特别直观的缘故(需要熟练掌握数组和循环等组件或条件的应用),所以我这里就不展开说了,但整体思路其实还是跟上面类似的,只是事件上设计成了方便通过数组直接新增档位的效果,这样就不会随着档位增多而增加的事件表的事件量。
-
非常非常非常感谢,
首先是原来我的否则这个用法真是对我冗长的代码来说真是灾难
二是分支选择组件真是福音
因为我的概率是变动的例如A的概率是(x+10)x是未知量,如果用概率组建的话例如
否则后面的概率也要跟着变难度很大。
例如70%A20%B10%C剩下D
如果用概率的话是
70%A
否则 66%B
否则 C
而不是
70%A
否则 20%B
否则 C
一多了概率算术难度就会很大。