设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4001|回复: 1
打印 上一主题 下一主题

[有事请教] 如何通过变量控制随机数

[复制链接]

Lv3.寻梦者

梦石
0
星屑
987
在线时间
77 小时
注册时间
2020-5-31
帖子
61
跳转到指定楼层
1
发表于 2021-7-13 23:33:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1星屑
RPGMV里可以将变量设置为固定范围内的一个随机值,但是如果需要将变量的随机范围用另一个变量控制,该怎么实现呢?
例如我有n张不同的卡,然后我需要抽取其中一张,那么需要设置一个1到n的变量,这样的操作怎么用mv实现呢?求大佬指点。

新作【破碎传说】要素超多的奇幻风RPG作品持续更新中 https://rpg.blue/thread-494102-1-1.html

Lv3.寻梦者

梦石
0
星屑
1282
在线时间
257 小时
注册时间
2021-2-16
帖子
247
2
发表于 2021-7-14 03:30:05 | 只看该作者
本帖最后由 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:如有其他错误或更好的方法还望不吝指出。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-29 10:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表