gpt4 book ai didi

random - Lua中获取随机数的其他方法

转载 作者:行者123 更新时间:2023-12-02 05:03:30 33 4
gpt4 key购买 nike

我正在寻找一种替代方法来在 Lua 中获取介于最小和最大数字之间的随机数,而无需使用 math.random()。有什么办法吗?它不一定是一个简单的方法。

最佳答案

就像评论所暗示的那样,在类 Unix 系统上,您可以从 /dev/random/dev/urandom 读取字节,并从他们。

urand = assert (io.open ('/dev/urandom', 'rb'))
rand = assert (io.open ('/dev/random', 'rb'))

function RNG (b, m, r)
b = b or 4
m = m or 256
r = r or urand
local n, s = 0, r:read (b)

for i = 1, s:len () do
n = m * n + s:byte (i)
end

return n
end
<小时/>

作为这个答案的扩展,为了好玩,我编写了一个非常小的模块,randbytes ,以便将来的读者可以以简单的方式使用 /dev/random/dev/urandom 接口(interface)。这是一个快速的总结。

安装luarocks或者手动获取。

$ luarocks install randbytes

需要模块或文件。

$ lua
> randbytes = require 'randbytes'

然后抓取一些字节。

> print (randbytes (8))

现在,我已经清理并包含了上面所示的非常简单的生成算法,用于生成基本的随机数。

> print (randbytes:urandom (16))

您可以在基本接口(interface)之上构建来实现您自己的算法。阅读documentation获取方法和设置的完整列表。

关于random - Lua中获取随机数的其他方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31082209/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com