我正在使用Corona SDK和Lua作为编程语言开发游戏。在从表格中获取随机数时,我不确定应该使用以下哪种方法?
math.random()
math.randomseed()
有人能详细解释它们之间的确切区别吗?这样我就可以在我的情况下使用最好的一个。
我正在使用Corona SDK和Lua作为编程语言开发游戏。在从表格中获取随机数时,我不确定应该使用以下哪种方法?
math.random()
math.randomseed()
有人能详细解释它们之间的确切区别吗?这样我就可以在我的情况下使用最好的一个。
如果您调用math.random()
时需要相同的随机数序列,则必须在调用math.random()
之前设置math.randomseed(相同的数字)
。
如果您想要不同的随机数序列,则在调用math.random()
之前传递math.randomseed(os.time())
,因为os.time()
将返回秒数,所以每次都会不同。
请参考以下链接并查看其中的示例。
https://docs.coronalabs.com/api/library/math/randomseed.html
math.random
函数可以产生随机数,如果程序需要用到随机数,很可能会多次调用这个函数。
math.randomseed
函数决定了由 math.random
生成的随机数序列的起点。在程序需要随机数时仅需调用一次该函数。
有一个常见的误解认为,在每次调用 math.random
函数之前都需要调用 math.randomseed
函数。这是错误的做法,会破坏随机性。
randomseed
将会得到与random
返回的相同数字序列,这在游戏测试中有时非常方便。 - Paul Kulchenkomath.random
的程序时,如果没有设置math.randomseed
,通常会产生相同的一组随机数。这是因为math.randomseed
负责为由math.random
产生的随机数设置默认的种子(或算法生成器)。for i = 1,10 do
print(math.random())
end
不断点击运行按钮,观察解释器每次都会产生相同的数字。然而,为了改变生成随机数的“种子”,我们可以将“seed”设置为当前时间(因为当前时间不重复)。
这次,请在网站上多次执行以下代码:
math.randomseed(os.time())
for i = 1,10 do
print(math.random())
end