赞 | 66 |
VIP | 0 |
好人卡 | 0 |
积分 | 13 |
经验 | 0 |
最后登录 | 2022-11-25 |
在线时间 | 257 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1282
- 在线时间
- 257 小时
- 注册时间
- 2021-2-16
- 帖子
- 247
|
本帖最后由 tuxyin 于 2021-7-17 13:59 编辑
Math.random()是js原生方法,它直接返回一个0到1(不包含1)的随机数,minNum表示随机最小值,maxNum表示随机最大值。
如果要用RM里面的变量,可以把minNum或maxNum替换成以下语句:
$gameVariables._data[n]
n表示RM变量的编号,第一个编号从1开始
例如,我想获得一个随机数,最小值为8,最大值为2号RM变量的值,可以写作:Math.random() * ($gameVariables._data[2] - 8) + 8
上面计算出来的是浮点数,可以把结果再套一层Math.ceil(),也就是上舍入为整数,最终写作:Math.ceil(Math.random() * ($gameVariables._data[2] - 8) + 8)
因为红色段落中的公式,会导致返回随机最小整数值的概率远低于其他随机整数值,所以修改了一下这个公式:
Math.floor(Math.random() * ($gameVariables._data[2] + 1 - 8)) + 8
现在的返回值,最小为整数8,最大为2号RM变量整数值,所有返回值的随机概率理论上相等。
最后,随机返回指定最小整数(包含)至最大整数(包含)间某个整数的通用伪代码公式为:
Math.floor(Math.random() * (maxNum + 1 - minNum)) + minNum
PS:如有其他错误或更好的方法还望不吝指出。
|
|