【问题标题】:Lua math.random returns erratic valuesLua math.random 返回不稳定的值
【发布时间】:2015-05-06 19:45:40
【问题描述】:

我想知道为什么我的脚本数据无效,然后我尝试测试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

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

【问题讨论】:

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

标签: random lua


【解决方案1】:

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

upper 和 lower 必须是整数。在其他情况下,Lua 将upper 转换为整数,有时给出math.floor(upper) 和其他math.ceil(upper),结果出乎意料(lower 也一样)。

【讨论】:

    【解决方案2】:

    威尔说Yanick Rochon

    upper 和 lower 必须是整数。在其他情况下,Lua 将upper 转换为整数,有时给出math.floor(upper) 和其他math.ceil(upper),结果出乎意料(lower 也一样)。

    因此:

    return math.random(0.8, 1.2); 0.8

    文档参考说:

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

    字体:http://goo.gl/eJvLup

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-04
      • 2014-06-04
      • 2018-01-22
      • 2018-07-22
      • 2023-03-06
      • 2014-12-21
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多