在lua中查找随机数

时间:2013-04-28 02:13:47

标签: random lua

我正在尝试使用lua生成一个随机数,但它只是吐出最低值。例如,如果我跑:

x = math.random(17,41)  
print(x)

它返回:

17

有什么问题?

3 个答案:

答案 0 :(得分:3)

Lua使用C运行时库伪随机数生成器。其属性取决于您的平台。例如在Windows的某些版本上,生成器始终在伪随机序列的同一点初始化,因此在运行程序时总是得到相同的值序列(参见http://msdn.microsoft.com/en-US/library/f0d4wb4t.aspx)。

您可以使用math.randomseed在其他地方启动伪随机序列。您可以使用os.time在每次运行程序时使用不同的值对其进行初始化(假设您在运行之间允许至少经过一秒钟)。

另请注意,在某些Windows C运行时库中,调用srand(或Lua中的math.randomseed)后得到的第一个伪随机值非常依赖于您传递的值。所以我建议调用math.random一次,并在调用math.randomseed后忽略它的结果。

答案 1 :(得分:3)

这不一定是真的。所有随机数都不是完全随机的。作为一个例子,你可以看看这个工作代码;与您发布的问题相同:http://eval.in/17806

您可以看到的输出是 38

引用Doub的回复:

  

您可以使用math.randomseed启动伪随机序列   别处。您可以使用os.time使用其他内容对其进行初始化   每次运行程序时的值(假设您允许至少一个   在跑步之间经过第二次。)

以下是使用randomseed实施的同一计划的示例:http://eval.in/17808

math.randomseed( os.time() )
x = math.random(17,41)  
print(x)

答案 2 :(得分:0)

你为PRNG播种了吗?

例如math.randomseed(os.time())