【发布时间】:2013-12-23 06:14:15
【问题描述】:
我正在尝试随机填充一个包含 26 个值的表格。也就是说,我有一个名为rndmalpha 的表,我想在整个表中随机插入值。这是我的代码:
rndmalpha = {}
for i= 1, 26 do
rndmalpha[i] = 0
end
valueadded = 0
while valueadded = 0 do
a = math.random(1,26)
if rndmalpha[a] == 0 then
rndmalpha[a] = "a"
valueadded = 1
end
end
while valueadded = 0 do
a = math.random(1,26)
if rndmalpha[a] == 0 then
rndmalpha[a] = "b"
valueadded = 1
end
end
...
代码会一直重复到"z",所以这只是一个大概的想法。然而,我遇到的问题是,随着桌子被填满,随机命中率降低了。这有可能冻结程序,尤其是在最后的字母中,因为只有 2-3 个数字具有 0 作为值。那么,如果while 循环在最终达到最后一个数字之前经过一百万次调用会发生什么?有没有一种有效的方式可以说,“嘿,忽略第 6、13、17、24 和 25 号位置,专注于填补其他位置。”?就此而言,是否有更有效的方法来完成我正在做的事情?
【问题讨论】:
标签: random lua iteration lua-table