Lua中生成均匀随机数的方法是什么?

2026-04-01 19:591阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计500个文字,预计阅读时间需要2分钟。

Lua中生成均匀随机数的方法是什么?

我正在用Lua编程编写一个马鲁可链,其中有一个元素需要生成一个随机数。这是一个简单的例子来说明我的问题:`example=function(x) local r=math.random(1,10) print(r) return x[r] end` `array={a, b, c}`

我正在Lua编程一个马尔可夫链,其中一个要素就是要统一生成随机数.这是一个简单的例子来说明我的问题:

example = function(x) local r = math.random(1,10) print(r) return x[r] end exampleArray = {"a","b","c","d","e","f","g","h","i","j"} print(example(exampleArray))

我的问题是,当我多次重新运行此程序(mash F5)时,会产生完全相同的随机数,导致示例函数选择完全相同的数组元素.然而,如果我在单个程序中包含许多对示例函数的调用,那么多次重复打印行,我会得到合适的随机结果.

这不是我的意图,因为适当的马可夫伪随机文本生成器应该能够以相同的输入多次运行相同的程序,并且每次输出不同的伪随机文本.我已经尝试使用math.randomseed(os.time())重新设置种子,这使得随机数分布不再统一.我的目标是能够重新运行上述程序,并且每次都会随机选择一个数字.

在使用math.random()之前,您需要运行math.randomseed()一次,像这样:

math.randomseed(os.time())

从你的评论,你看到第一个数字仍然是一样的.这是由某些平台中随机生成器的实现引起的.

解决方案是在使用它们之前弹出一些随机数:

math.randomseed(os.time()) math.random(); math.random(); math.random()

请注意,标准C库random()通常不是一致的随机,更好的解决方案是使用更好的随机生成器,如果您的平台提供一个.

Lua中生成均匀随机数的方法是什么?

参考:Lua Math Library

本文共计500个文字,预计阅读时间需要2分钟。

Lua中生成均匀随机数的方法是什么?

我正在用Lua编程编写一个马鲁可链,其中有一个元素需要生成一个随机数。这是一个简单的例子来说明我的问题:`example=function(x) local r=math.random(1,10) print(r) return x[r] end` `array={a, b, c}`

我正在Lua编程一个马尔可夫链,其中一个要素就是要统一生成随机数.这是一个简单的例子来说明我的问题:

example = function(x) local r = math.random(1,10) print(r) return x[r] end exampleArray = {"a","b","c","d","e","f","g","h","i","j"} print(example(exampleArray))

我的问题是,当我多次重新运行此程序(mash F5)时,会产生完全相同的随机数,导致示例函数选择完全相同的数组元素.然而,如果我在单个程序中包含许多对示例函数的调用,那么多次重复打印行,我会得到合适的随机结果.

这不是我的意图,因为适当的马可夫伪随机文本生成器应该能够以相同的输入多次运行相同的程序,并且每次输出不同的伪随机文本.我已经尝试使用math.randomseed(os.time())重新设置种子,这使得随机数分布不再统一.我的目标是能够重新运行上述程序,并且每次都会随机选择一个数字.

在使用math.random()之前,您需要运行math.randomseed()一次,像这样:

math.randomseed(os.time())

从你的评论,你看到第一个数字仍然是一样的.这是由某些平台中随机生成器的实现引起的.

解决方案是在使用它们之前弹出一些随机数:

math.randomseed(os.time()) math.random(); math.random(); math.random()

请注意,标准C库random()通常不是一致的随机,更好的解决方案是使用更好的随机生成器,如果您的平台提供一个.

Lua中生成均匀随机数的方法是什么?

参考:Lua Math Library