查看: 2364|回复: 7

[有事请教] 用脚本下舍入算随机数,随机范围是否应该+1?

[复制链接]
梦石
0
星屑
970
在线时间
63 小时
注册时间
2020-3-7
回帖
31
发表于 2021-7-16 12:17:33 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
如题,例如操作变量:#0001测试=Math.floor(Math.random() * ($gameVariables._data[2] - 1) + 1),其中变量2的值为3
假若我要使一个事件的概率为2/3,条件分歧为变量0001测试>1时执行,这样可以吗?还是需要设置变量2的值为4才可以?如果设为4的话,变量1的值会不会随机到4?
求大佬指点!!!      谢谢!!!
梦石
0
星屑
7801
在线时间
683 小时
注册时间
2012-7-29
回帖
172
发表于 2021-7-16 13:24:44 | 显示全部楼层
本帖最后由 开关关 于 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。
回复

使用道具 举报

梦石
0
星屑
7089
在线时间
722 小时
注册时间
2021-3-5
回帖
731
发表于 2021-7-16 13:26:04 | 显示全部楼层
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的概率了

你另一个帖子也是类似的问题,我就不重复粘贴了
回复

使用道具 举报

梦石
0
星屑
970
在线时间
63 小时
注册时间
2020-3-7
回帖
31
 楼主| 发表于 2021-7-17 07:33:24 | 显示全部楼层
开关关 发表于 2021-7-16 13:24
楼主用的操作变量的式子,会得到一个在[1,3)区间内的整数,也就是1或2,概率各占50%。所以条件设成 #0001测 ...

谢谢大佬!

点评

其实还有个更简单的方法,直接在条件分歧里选择“脚本”,然后写 Math.random() < 2/3 这样连变量都用不到了。_(:з」∠)_  发表于 2021-7-17 13:18
回复

使用道具 举报

梦石
0
星屑
970
在线时间
63 小时
注册时间
2020-3-7
回帖
31
 楼主| 发表于 2021-7-17 07:34:21 | 显示全部楼层
RyanYe 发表于 2021-7-16 13:26
Math.random() 是0到1之间的数字,取不到1
因此Math.random()*2 + 1 这个的范围是1到3,取不到3
你再给他fl ...

谢谢大佬!
回复

使用道具 举报

梦石
0
星屑
1282
在线时间
257 小时
注册时间
2021-2-16
回帖
229
发表于 2021-7-17 09:56:45 | 显示全部楼层
本帖最后由 tuxyin 于 2021-7-17 09:59 编辑

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

现在可以参考这个公式(没有基于你的提问,只是提供一种思路):
Math.floor(Math.random() * (maxNum + 1 - minNum)) + minNum
随机返回最小整数minNum至最大整数maxNum间的某个整数,结果包含minNum、maxNum,并且返回每个整数的概率理论上相同。
回复

使用道具 举报

梦石
0
星屑
970
在线时间
63 小时
注册时间
2020-3-7
回帖
31
 楼主| 发表于 2021-7-17 11:29:42 | 显示全部楼层
tuxyin 发表于 2021-7-17 09:56
我在另一个帖子里面回复过类似的问题,但是那个回复有点问题,返回最小值的概率远低于其他值,所以重新修改 ...

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

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部