Random 查找lua中的随机数

Random 查找lua中的随机数,random,lua,Random,Lua,我试图使用lua生成一个随机数,但它只是给出了最低值。例如,如果我运行: x = math.random(17,41) print(x) 它返回: 17 出什么事了?你给PRNG播种子了吗 例如,math.randomseed(os.time())Lua使用C运行时库伪随机数生成器。其属性取决于您的平台。例如,在(某些版本的)Windows上,生成器始终在伪随机序列的同一点初始化,因此在运行程序时,始终会获得相同的值序列(请参见) 可以使用math.randomseed在其他位置启动伪随

我试图使用lua生成一个随机数,但它只是给出了最低值。例如,如果我运行:

x = math.random(17,41)  
print(x)
它返回:

17
出什么事了?

你给PRNG播种子了吗


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

Lua使用C运行时库伪随机数生成器。其属性取决于您的平台。例如,在(某些版本的)Windows上,生成器始终在伪随机序列的同一点初始化,因此在运行程序时,始终会获得相同的值序列(请参见)

可以使用math.randomseed在其他位置启动伪随机序列。每次运行程序时,您都可以使用os.time以不同的值对其进行初始化(假设两次运行之间至少间隔一秒钟)


还要注意,在某些Windows C运行时库中,调用srand(或Lua中的math.randomseed)后获得的第一个伪随机值非常依赖于传递的值。因此,我建议调用math.random一次,并在调用math.randomseed后忽略其结果。

这不一定正确。并非所有的随机数都是完全随机的。例如,您可以查看此工作代码;与您发布的问题相同:

您可以看到的输出是38

引用杜布的回答:

您可以使用
math.randomseed
启动伪随机序列 在别处您可以使用
os.time
使用不同的 每次运行程序时的值(假设您至少允许一个 第二步是运行间隔)

下面是同一个程序的一个示例,该程序使用了
randomseed


使用math.randomseed(os.time())在我第一次使用它时就起作用了,但不管执行之间允许经过多少秒,它都会返回相同的值。想法?@user2218101您能提供您的代码吗?您需要在每次调用math.randomseed()之前调用math.randomseed()。尽管如此,
math.randomseed(os.time())
的使用并不会改变这样一个事实,即在前一个脚本之后不久的脚本可能会产生完全相同或非常相似的数字。似乎,对于更随机的解决方案,需要自定义种子函数。
math.randomseed( os.time() )
x = math.random(17,41)  
print(x)