gpt4 book ai didi

在 Lua 中随机化数字而不重复

转载 作者:行者123 更新时间:2023-12-04 15:12:52 26 4
gpt4 key购买 nike

我正在 Lua 中做一个项目,其中涉及不重复的随机数字。这是我的代码

for i = 1, 86000 do
while rndom[num] ~= nil do
num = math.random(1,95000)
end
rndom[num] = num
for k=1, 11 do
file2:write(input[num][k], " ")
end
file2:write("\n")
end

基本上它给 rndom[num] 赋值,这样当随机数重复并且 rndom[num] ~= nil 时,它会再次随机数。我的问题是,随着我的“i”变得更高,加载时间太长,并且有一段时间它会停止。我猜这是因为随机化器无法获得一个 rndom[num] 为 'nil'。我的意思是,正确的几率是多少?我想改善它的运行时间。谁能为我的问题提出更好的解决方案?

谢谢!

最佳答案

最好用 O(N) 生成排列时间复杂度。

local n = 95000

local t = {}
for i = 1, n do
t[i] = i
end

for i = 1, 86000 do
local j = math.random(i, n)
t[i], t[j] = t[j], t[i]
for k = 1, 11 do
file2:write(input[t[i]][k], " ")
end
file2:write"\n"
end

关于在 Lua 中随机化数字而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120281/

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