Project1

标题: 用脚本下舍入算随机数,随机范围是否应该+1? [打印本页]

作者: 平凡人    时间: 2021-7-16 12:17
标题: 用脚本下舍入算随机数,随机范围是否应该+1?
如题,例如操作变量:#0001测试=Math.floor(Math.random() * ($gameVariables._data[2] - 1) + 1),其中变量2的值为3
假若我要使一个事件的概率为2/3,条件分歧为变量0001测试>1时执行,这样可以吗?还是需要设置变量2的值为4才可以?如果设为4的话,变量1的值会不会随机到4?
求大佬指点!!!      谢谢!!!
作者: 开关关    时间: 2021-7-16 13:24
本帖最后由 开关关 于 2021-7-16 13:27 编辑

楼主用的操作变量的式子,会得到一个在[1,3)区间内的整数,也就是1或2,概率各占50%。所以条件设成 #0001测试>1 的效果是事件的概率为1/2。

这些步骤当中,有俩东西我没看懂,一个是取整Math.floor,一个是 - 1) + 1) ,感觉这两个操作没什么必要。

要使一个事件的概率为2/3,我可能会这样做:

1. 操作变量:#0002 = 3
2. 操作变量:#0001测试 = Math.random() * $gameVariables._data[2]   // 这一步得到一个[0,3)区间内的浮点数
3. 条件分歧:#0001测试 < 2 时执行

这样比较直观,看见 #0002 = 3 就知道分母为3,看见 #0001测试 < 2 就知道分子为2。
作者: RyanYe    时间: 2021-7-16 13:26
Math.random() 是0到1之间的数字,取不到1
因此Math.random()*2 + 1 这个的范围是1到3,取不到3
你再给他floor一下,就变成了1到2了

如果你要概率为1/3的话,那么0001测试>1肯定不行,因为这是1/2的概率(就是只有2才满足条件,1不满足)
你那个变量2是代表什么含义?就是概率的分母吗?如果是的话,那要不你把公式里那个“-1”删掉试试?
这样一来的话,如果[2]是3的话,那么随机结果就是1到3了,然后你写个≤1,也就是只有1才算判定成功,这样就是1/3的概率了

你另一个帖子也是类似的问题,我就不重复粘贴了
作者: 平凡人    时间: 2021-7-17 07:33
开关关 发表于 2021-7-16 13:24
楼主用的操作变量的式子,会得到一个在[1,3)区间内的整数,也就是1或2,概率各占50%。所以条件设成 #0001测 ...

谢谢大佬!
作者: 平凡人    时间: 2021-7-17 07:34
RyanYe 发表于 2021-7-16 13:26
Math.random() 是0到1之间的数字,取不到1
因此Math.random()*2 + 1 这个的范围是1到3,取不到3
你再给他fl ...

谢谢大佬!
作者: tuxyin    时间: 2021-7-17 09:56
本帖最后由 tuxyin 于 2021-7-17 09:59 编辑

我在另一个帖子里面回复过类似的问题,但是那个回复有点问题,返回最小值的概率远低于其他值,所以重新修改了一下。

现在可以参考这个公式(没有基于你的提问,只是提供一种思路):
Math.floor(Math.random() * (maxNum + 1 - minNum)) + minNum
随机返回最小整数minNum至最大整数maxNum间的某个整数,结果包含minNum、maxNum,并且返回每个整数的概率理论上相同。
作者: 平凡人    时间: 2021-7-17 11:29
tuxyin 发表于 2021-7-17 09:56
我在另一个帖子里面回复过类似的问题,但是那个回复有点问题,返回最小值的概率远低于其他值,所以重新修改 ...

谢谢大佬!
其实我就是看到您那个帖子里的公式然后自以为的推出上面的的




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1