首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要用lua生成一个32位的随机数,请建议一些方法

我需要用lua生成一个32位的随机数,请建议一些方法
EN

Stack Overflow用户
提问于 2016-06-02 19:33:56
回答 2查看 876关注 0票数 1

我想生成一个包含字母数字字符的32位密钥,它们应该始终是唯一的。请建议一种方法来做这件事。

我用过math.random函数,但我一次又一次地得到相同的随机数,我希望它是唯一的。

EN

回答 2

Stack Overflow用户

发布于 2016-06-02 20:07:01

如果你想要一个唯一的号码,你必须有一个用过的号码列表。否则,您将始终有机会再次获得一个二手号码。虽然它不太可能是32位数字。

您显然没有阅读有关math.randomhttp://www.lua.org/manual/5.3/manual.html#pdf-math.random的文档

否则,您将知道,除非您使用math.randomseed更改种子值,否则math.random将始终给出相同的伪随机数。

在使用函数之前,请务必阅读有关函数的文档。

票数 1
EN

Stack Overflow用户

发布于 2016-06-03 00:37:33

下面这个简单的程序生成1000个随机的32位密钥,没有重复,没有浪费精力:

代码语言:javascript
运行
复制
M=2^32-1
R={}
N=1000
n=0

for i=1,N do
    local x=math.random(M)
    if R[x]==nil then n=n+1 R[x]=n print(n,i,n==i,x) end
end

关键是M太大了,即使我们将N增加到一百万,重复的可能性也很小。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37590658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档