Lua math.random返回不稳定的值

时间:2015-05-06 19:45:41

标签: 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(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

我对我得到的结果感到有些困惑。有人可以澄清一下吗?

2 个答案:

答案 0 :(得分:7)

http://lua-users.org/wiki/MathLibraryTutorial

  

upper和lower必须是整数。在其他情况下,Lua将上部转换为整数,有时给出math.floor(上部)和其他math.ceil(上部),具有意外结果(对于较低的结果相同)。

答案 1 :(得分:1)

会说 Yanick Rochon

  

upper和lower必须是整数。在其他情况下,Lua将上部转换为整数,有时给出math.floor(上部)和其他math.ceil(上部),具有意外结果(对于较低的结果相同)。

因此:

  

return math.random(0.8,1.2);   0.8

文档参考说:

  

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

font:http://goo.gl/eJvLup