【问题标题】:How to generate a random decimal number in love2D?如何在love2D中生成随机十进制数?
【发布时间】:2021-12-03 17:46:24
【问题描述】:

我尝试使用以下代码在 love2d 中生成介于(比如说 0.3 和 0.8 之间)的随机十进制数:

x=math.random(0.3, 0.8)
print(x)

但是发生的情况是,每次我运行程序时它都会生成 0.3,并且 0.4 中的 0 会闪烁(在某种意义上它会变为 1)。

如果有帮助,这里有一个屏幕记录 https://vimeo.com/632949687

【问题讨论】:

    标签: lua love2d


    【解决方案1】:

    您的问题未详细说明。这里有两个简单的解决方案;它们不相等。

    这会在集合 {0.3,0.4,0.5,0.6,0.7,0.8} 中生成随机数:

    math.random(3,8)/10
    

    这会在区间 [0.3,0.8) 中生成随机数:

    0.3+(0.8-0.3)*math.random()
    

    【讨论】:

    • “每次运行程序都会生成 0.3”意味着他们也可能忘记在启动时调用 math.randomseed()
    【解决方案2】:

    在 LÖVE 中有一个独立于平台的版本 random()
    https://love2d.org/wiki/love.math.random
    无需使用math.randomseed()love.math.setRandomSeed()
    对于 0 和 1 范围内的浮点数,只需使用...
    love.math.random()

    '但是发生的是它每次生成 0.3'
    这里也一样,所以最简单的方法似乎是@lhf' 示例。

    【讨论】:

      【解决方案3】:

      检查功能

      function random(min, max, precision)
          local precision = precision or 0
          local num = math.random()
          local range = math.abs(max - min)
          local offset = range * num
          local randomnum = min + offset
          return math.floor(randomnum * math.pow(10, precision) + 0.5) / math.pow(10, precision)
      end
      

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      • 非常感谢您的回答。然而,对于像我这样一个简单的目标来说,它太复杂了。但我一定会在需要时使用您的代码。
      • 没关系,我明白了,但我想给你一个复杂的理解。
      猜你喜欢
      • 1970-01-01
      • 2022-11-03
      • 1970-01-01
      • 2010-11-06
      • 2018-06-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      • 1970-01-01
      相关资源
      最近更新 更多