制作一个包含所有不同值的随机表?

Posted

技术标签:

【中文标题】制作一个包含所有不同值的随机表?【英文标题】:Making a randomized table with all different values? 【发布时间】:2022-01-09 08:35:39 【问题描述】:

我正在尝试制作一个占用更少代码空间的随机表。

当前代码:

math.randomseed(tick())
local MyTable = math.random(0, 100), math.random(0, 100), math.random(0, 100), math.random(0, 100)

for i, v in ipairs(MyTable) do
    print(i.."- "..v)
end

预期输出:

1- some random number
2- a different random number
3- a different random number
4- a different random number

这确实给了我想要的输出,但是第 3 行 local MyTable = ... 的长度处理起来很烦人,所以我想知道是否有一种方法可以分配一个变量来给出一个随机数并将其代替每个表的索引。

顺便说一句,我已经测试过了:

math.randomseed(tick())
local rand = math.random(0, 100)
local MyTable = rand, rand, rand, rand

for i, v in ipairs(MyTable) do
    print(i.."- "..v)
end

问题在于,因为rand 是一个预定义变量,它为每个索引输出相同的数字。

如果您有解决方案,这将非常有帮助,因为我正在尝试使用 30 个索引长的随机表,而且很难通过。 谢谢。

【问题讨论】:

你也可以在***.com/questions/53058377/…看我的回答 【参考方案1】:

要具体回答您的问题,“您可以分配一个变量来给出一个随机数吗”,您可以像这样将一个函数保存到一个变量中:

local rnd = function() return math.random(0, 100) end
local MyTable =  rnd(), rnd(), rnd(), rnd() 

与其手动添加这些值,为什么不使用循环插入任意数量的条目呢?虽然这是几行代码,但它更容易阅读,从长远来看可能会更好。

math.randomseed(tick())

local MyTable = 

-- generate a bunch of random numbers
local entriesToAdd = 30
for i = 1, entriesToAdd, 1 do
    MyTable[i] = math.random(0, 100)
end

-- print the entries
for i, v in ipairs(MyTable) do
    print(i.."- "..v)
end

【讨论】:

以上是关于制作一个包含所有不同值的随机表?的主要内容,如果未能解决你的问题,请参考以下文章

同一表中具有不同值的重复字段

如何处理数据仓库中重复id包含略有不同值的维度表?

我想制作一个表变量,我可以在 Microsoft sql server management studio 上制作它吗?

SQL返回一个字段包含相同数据但其他字段包含不同数据的行

s-s-rS 三个具有相似值的不同表的组合

SQL Server - 与随机值的相关性?