【发布时间】: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
【问题讨论】:
我尝试使用以下代码在 love2d 中生成介于(比如说 0.3 和 0.8 之间)的随机十进制数:
x=math.random(0.3, 0.8)
print(x)
但是发生的情况是,每次我运行程序时它都会生成 0.3,并且 0.4 中的 0 会闪烁(在某种意义上它会变为 1)。
如果有帮助,这里有一个屏幕记录 https://vimeo.com/632949687
【问题讨论】:
您的问题未详细说明。这里有两个简单的解决方案;它们不相等。
这会在集合 {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()
【讨论】:
math.randomseed()。
在 LÖVE 中有一个独立于平台的版本 random()。
https://love2d.org/wiki/love.math.random
无需使用math.randomseed() 或love.math.setRandomSeed()。
对于 0 和 1 范围内的浮点数,只需使用...love.math.random()
'但是发生的是它每次生成 0.3'
这里也一样,所以最简单的方法似乎是@lhf' 示例。
【讨论】:
检查功能
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
【讨论】: