Lua中math.random()和math.randomseed()之间的区别

时间:2016-02-17 11:31:00

标签: lua random-seed

我正在使用Corona SDK和Lua作为编程语言进行游戏。从表中获取随机数时,我很困惑使用以下哪一个?

math.random()
math.randomseed()

有人会详细说明它们之间的确切区别吗?所以我可以使用最好的一个。

3 个答案:

答案 0 :(得分:5)

math.random为您提供随机数字。您可能会在需要随机数的程序中多次调用它。

math.randomseed确定从math.random给出的随机数序列的起始位置。您可能会在需要随机数的程序中只调用一次

在每次致电math.randomseed之前,您需要致电math.random,这似乎是一种常见的误解。这是错误的,会破坏math.random的随机性。

答案 1 :(得分:2)

当您执行使用math.random的程序而未设置math.randomseed时,它通常会产生相同的随机数集。这是因为math.randomseed负责为seed带来的随机数设置默认math.random(或算法生成器)。

这种一致性显然不是随机的。请允许我举一个例子 - 首先转到Lua Demo Website,然后插入这段代码:

for i = 1,10 do
print(math.random())
end

继续按下运行按钮,看看解释器每次都会产生相同的数字。但是,要更改生成随机数的“种子”,我们可以将“种子”设置为当前时间(因为当前时间不会重复)

这次去网站并多次执行此代码:

math.randomseed(os.time())
for i = 1,10 do
print(math.random())
end

您现在应该注意每次如何获得不同的数字。

答案 2 :(得分:1)

如果您在致电math.random()时需要相同的顺序,则必须在致电math.randomseed(same number every time before calling)之前设置math.random()

如果你想要一个不同的随机数序列,那么在调用math.randomseed(os.time())之前通过math.random()因为os.time()将返回秒数的时间,所以每次都会有所不同。< / p>

请参阅以下链接并查看示例。

https://docs.coronalabs.com/api/library/math/randomseed.html