2013-07-15 45 views

回答

11

Lua的math.random()带有两个参数返回指定范围内的整数。

当不使用参数调用时,它返回0.0到1.0之间的伪随机实数。

要获得指定范围内的实数,您需要进行自己的缩放;例如:

math.random() * 0.8 + 0.1 

会给你一个0.1到0.9之间的随机实数。更一般地说:

math.random() * (hi - lo) + lo 

如果你喜欢,你可以包裹在你自己的功能。

但我会注意到这是一个相当特殊的范围。如果你真的想从0.1中选择,0.2,随机数0.3,0.4,...,0.9,那么你应该在范围1生成至9的整数,然后通过10.0分着喝

math.random(1, 9)/10.0 

保持请记住,大多数实数不能完全用浮点数表示。

2

您可以使用math.random()(无参数)为0和1之间产生一个数,并用它来混合你的两个目标号码。

-- generates a random real number between a (inclusive) and b (exclusive) 
function rand_real(a, b) 
    return a + (b - a) * math.random() 
end 
0
(math.random(10,90))/100 

这会生成一个从10到90的数字,并且分数会给出一个从0.1到0.9的数字。

+0

是的,但它只给你79(90-10 + 1)在该范围内的不同值;这不太可能是OP想要的。要获得真正的随机数字,请不带参数调用'math.random()';看另外两个答案。 –