Lua math.random返回不稳定的值

Lua math.random返回不稳定的值,random,lua,Random,Lua,我想知道为什么脚本中有无效数据,然后我尝试测试math.random,因为它似乎来自它的返回值。这是我从Lua控制台得到的信息: > return math.random(0.8, 1.2); 0.8 > return math.random(0.8, 1.2); 0.8 > return math.random(0.8, 1.2); 0.8 > return math.random(0.8, 1.2); 1.8 > return math.random(

我想知道为什么脚本中有无效数据,然后我尝试测试
math.random
,因为它似乎来自它的返回值。这是我从Lua控制台得到的信息:

> return  math.random(0.8, 1.2);
0.8
> return  math.random(0.8, 1.2);
0.8
> return  math.random(0.8, 1.2);
0.8
> return  math.random(0.8, 1.2);
1.8
> return  math.random(0.8, 1.2);
0.8
> return  math.random(0.8, 1.2);
1.8
> return  math.random(0.8, 1.2);
0.8
> return  math.random(0.8, 1.2);
1.8
> return  math.random(0.8, 1.2);
0.8
我对我得到的结果有点困惑。有人可以澄清吗?

上限和下限必须是整数。在另一种情况下,Lua将upper强制转换为整数,有时会给出math.floor(upper)和math.ceil(upper),结果出乎意料(lower也是如此)


威尔·赛义德·亚尼克·罗雄

上限和下限必须是整数。在另一种情况下,Lua将upper强制转换为整数,有时会给出math.floor(upper)和math.ceil(upper),结果出乎意料(lower也是如此)

因此:

返回数学随机(0.8,1.2); 0.8

参考文件说:

math.random([m[,n]])此函数是ANSI C提供的简单伪随机生成器函数rand的接口(无法保证其统计特性)。在无参数调用时,返回范围内的统一伪随机实数[0,1)当使用整数m调用时,math.random返回[1,m]范围内的统一伪随机整数。当使用两个整数m和n调用时,math.random返回[m,n]范围内的统一伪随机整数


字体:

要添加到Marc B所说的内容中,并且为了做您想做的事情,您可以通过执行以下操作来轻松更正:
return(math.random(8,12)/10)
,它将返回0.8到1.2。@Josh实际上,我一直在做的是:
0.8+(math.radnom()*0.4)
。这样,我就有了更多的精度变化。