Random 有没有一种好方法可以在Lua中生成无重复的随机数据?
我以前问过这个问题,但没有得到我想要的答案。经检查,这是我的错,因为我没有明确我的目标是什么,我很抱歉。我正在为我正在学习的AP统计类编写代码,其中必须生成无重复的随机数据。TI计算器使用Lua,所以我希望我可以制作一个程序,不仅生成数字,还可以为我回答问题,只是为了缩短所需的时间。作业的名称是“ESP”。为了时间的缘故,我将缩短场景,有两个人,艾米和本,他们把他们的名字写在两张索引卡上,然后把卡片放在信封里。现在有两个信封,里面有两个人的名字。第三个人给这两个人一个信封。任务是模拟20个或更多的试验。给他们信封的人的审判。下面是我为模拟这一点而编写的代码: math.randomseed(os.time()) 问题是,您可能会得到这样一个结果: 审判#1 艾米=匹配 本=没有对手 然而,不可能只有一个人获得匹配,反之亦然。所以我想看看是否有办法避免10人而不是2人重复。此外,该程序还可以告诉我每次试验中一定数量的匹配发生了多少次。例如,程序会说“3场比赛-2次”,这意味着在“n”个试验中,2个试验有3场比赛。他们得到了一个写着他们名字的信封。也许这会涉及费舍尔·耶茨的洗牌。现在我已经清楚地重新说明了我的目标,这可能吗?另外,我之所以设置Amy=0和Ben=1,是因为在最初的作业中,共有10人,0-9,而且,最初我将他们命名为a-j,我只是选择了Amy和Ben,以便更容易了解Lua程序的目标Random 有没有一种好方法可以在Lua中生成无重复的随机数据?,random,lua,Random,Lua,我以前问过这个问题,但没有得到我想要的答案。经检查,这是我的错,因为我没有明确我的目标是什么,我很抱歉。我正在为我正在学习的AP统计类编写代码,其中必须生成无重复的随机数据。TI计算器使用Lua,所以我希望我可以制作一个程序,不仅生成数字,还可以为我回答问题,只是为了缩短所需的时间。作业的名称是“ESP”。为了时间的缘故,我将缩短场景,有两个人,艾米和本,他们把他们的名字写在两张索引卡上,然后把卡片放在信封里。现在有两个信封,里面有两个人的名字。第三个人给这两个人一个信封。任务是模拟20个或更多
0
到9
的数组,并
洗牌。看一看0
到9
的数组,并
洗牌。看一看许多人经常面临同样的问题,我在这里提供的解决方案可能帮助了99%的人:
math.randomseed(os.time())
它为unix时间设置种子,unix时间总是在变化,因此每次都会不同
但是只把它放在脚本的顶部,不要多次使用它
如果您希望完全忽略重复:
local left = {}
for i = 1,10 do
left[i] = i
end
local function Random()
return table.remove(left, math.random(#left))
end
for i = 1,10 do
print(Random())
end
您可以很容易地修改它,将其包装为随机,以获取任意范围的数字。许多人经常面临同样的问题,这里我提供的解决方案可能可以帮助99%的人:
math.randomseed(os.time())
它为unix时间设置种子,unix时间总是在变化,因此每次都会不同
但是只把它放在脚本的顶部,不要多次使用它
如果您希望完全忽略重复:
local left = {}
for i = 1,10 do
left[i] = i
end
local function Random()
return table.remove(left, math.random(#left))
end
for i = 1,10 do
print(Random())
end
您可以很容易地修改它,将其包装为随机,以获取任意范围的数字。谢谢您的帮助,我将尝试一下,看看如何工作。然而,我确实希望独立地生成每个数字,因为这是针对AP统计类的,并且必须是这样。我希望有人能告诉我如何使独立生成的数字只出现一次。@ZackaryCW只需将洗牌数组中的值分配给十个变量。哦,好的,谢谢你的帮助,如果我很烦人,对不起。我做了math.randomseed(os.clock())它只会一次又一次地改变出现的数字。而且,这只是代码的一部分,整个程序生成一组数字的速度非常快,所以我需要一些能够完成10万次随机函数的东西,给我实际的随机数据。谢谢你的帮助,我会尝试一下,看看如何工作。然而,我确实希望独立地生成每个数字,因为这是针对AP统计类的,并且必须是这样。我希望有人能告诉我如何使独立生成的数字只出现一次。@ZackaryCW只需将洗牌数组中的值分配给十个变量。哦,好的,谢谢你的帮助,如果我很烦人,对不起。我做了math.randomseed(os.clock())它只改变了一遍又一遍出现的数字。而且,这只是一段代码的一部分,整个程序生成一组数字的速度非常快,所以我需要一个能做100000次随机函数的东西,给我实际的随机数据。这有帮助,但不能保证不会有重复。事实上,一个随机流必须包含重复。@lhf Oh我误解了他的问题。修复:在随机的返回和打印(random())中缺少结尾括号end@tony谢谢伙计,我的代码最近越来越乱了。我需要更多的练习,lolIt每次为我返回1,7,3,9,6,5,4,10,8,2。没有重复,但集合作为一个整体重复了一次又一次。我想要一些类似于TI-84的随机无重复函数的东西,因为TI也是用LuaThis编写的,它有帮助,但不能保证不会有重复。事实上,一个随机流必须包含重复。@lhf Oh我误解了他的问题。修复:在随机的返回和打印(random())中缺少结尾括号end@tony谢谢伙计,我的代码最近越来越乱了。我需要更多的练习,lolIt每次为我返回1,7,3,9,6,5,4,10,8,2。没有重复,但集合作为一个整体重复了一次又一次。我想要一些类似于TI-84的随机无重复函数的东西,因为TI也是用Lua编写的