LUA - 从表中选择一定数量的物品不重复
2022-3-1 3:54:11
收藏:0
阅读:1601
评论:4
所以我现在在做一个小项目,这是我第一次学习 LUA,目前我卡住了。我想做的是创建一个函数,它会随机选择1和5之间的两个数字,并使它们不能与玩家碰撞。我似乎无法随机选择两个不同的数字。我一直在寻找答案,但没有找到明确的答案。任何帮助都将不胜感激!
我的代码如下:
local function RandomChoice1()
local t = {workspace.Guess1.CB1,workspace.Guess1.CB2,workspace.Guess1.CB3,workspace.Guess1.CB4,workspace.Guess1.CB5}
local i = math.random(1,5)
end
原文链接 https://stackoverflow.com/questions/71303557
点赞
stackoverflow用户1847592
你可以生成 i2 - i1
的差值,而不是生成 i2
。
local i1 = math.random(5) -- 从 1..5 的间隔中随机选择一个数字
local diff = math.random(4) -- 从 1..4 的间隔中随机选择一个数字
local i2 = (i1 + diff - 1) % 5 + 1 -- 从 1..5 的间隔中选择与 i1 不同的数字
print(i1, i2)
2022-03-01 05:32:31
stackoverflow用户18287276
你可以使用递归方法。保存前一个数,如果和当前生成的数相同,就继续生成新的数,直到不同为止。这样可以保证不会出现相同的数。
local i = 0;
function ran(min,max)
local a = math.random(min,max);
if (a == i) then
return ran(min,max);
else
i = a;
return a;
end
end
2022-03-02 10:16:16
stackoverflow用户11740758
“2 from 5” 且不重复...
local t = {}
for i = 1, 5 do
t[i] = i
end
-- 从此,使用简单的 table.remove()...
-- (table.remove() 函数返回移除的键/值对的值,)
-- ...在一个随机键上避免重复
for i = 1, 2 do
print(table.remove(t, math.random(#t)))
end
示例输出...
1
4
2022-03-02 12:30:26
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
如果你需要以20%的概率选择一个数字(来自1..5的范围),并以25%的概率选择第二个数字(来自1..5但不包括第一个选择的数字),那么可以用类似如下代码实现:
local i1 = math.random(1,5) -- 从1..5范围内随机选择一个数字 -- 将区间上移以考虑已选数字 local i2 = math.random(2,5) -- 从2..5范围内随机选择一个数字 -- 如果出现冲突,则设为1 if i2 == i1, then i2 = 1 end
这将确保两个数字不同且符合你的要求。