我想生成一个包含字母数字字符的32位密钥,它们应该始终是唯一的。请建议一种方法来做这件事。
我用过math.random函数,但我一次又一次地得到相同的随机数,我希望它是唯一的。
发布于 2016-06-02 20:07:01
如果你想要一个唯一的号码,你必须有一个用过的号码列表。否则,您将始终有机会再次获得一个二手号码。虽然它不太可能是32位数字。
您显然没有阅读有关math.random:http://www.lua.org/manual/5.3/manual.html#pdf-math.random的文档
否则,您将知道,除非您使用math.randomseed更改种子值,否则math.random将始终给出相同的伪随机数。
在使用函数之前,请务必阅读有关函数的文档。
发布于 2016-06-03 00:37:33
下面这个简单的程序生成1000个随机的32位密钥,没有重复,没有浪费精力:
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增加到一百万,重复的可能性也很小。
https://stackoverflow.com/questions/37590658
复制相似问题