一个数组中的随机数。
2014-1-4 20:33:35
收藏:0
阅读:183
评论:2
我有六个变量,这些变量在屏幕上的位置是不同的,我想在这些变量中放置不同的图像,因此我有一个包含图像的数组。
misImagenes = {[1] = "rec/ro.png",[2] ="rec/az.png",[3] ="rec/ros.png",[4] ="rec/ne.png",[5] ="rec/ve.png",[6] ="rec/am.png"}
我将这个数组的元素放入另一个数组中,其中具有2个不同的随机数,如下所示:
randoms = {[1] = misImagenes[math.random(1,6)],[2] = misImagenes[math.random(1,6)] }
因此,我想以随机形式放置这些随机数,因此,我创建了一个随机数组中的随机数。
randomRan = randoms[math.random(1,2)]
我将randomRan放入6个变量中,但这些变量的图像始终相同。
uno = display.newImageRect(randomRan,340,280)
dos = display.newImageRect(randomRan,340,280)
tres = display.newImageRect(randomRan,340,280)
cuatro = display.newImageRect(randomRan,340,280)
cinco = display.newImageRect(randomRan,340,280)
seis = display.newImageRect(randomRan,340,280)
这些变量具有randomRan,但图像始终相同,我需要使图像不同,在随机变量中有2个不同的图像。
谢谢
点赞
用户828255
看起来你想做的是常见的数组洗牌和过滤操作。
当你把randoms[math.random(1,2)]赋值给randomRan 变量时,无论如何它都会保持一样。它不会每次使用时都是随机的。不过,如果是函数调用,如randomRan(),那情况就不同了,这取决于函数所做的工作。一般来说,一旦变量被赋值,除非改变,否则它会保持不变。
math.randomseed(os.time()) --请务必种子化随机数生成器。
local function shuffle(t)
local n = #t
while n >= 2 do
-- n现在是最后一个相关的索引
local k = math.random(n) --1 <= k <= n
-- 快速交换
t[n],t[k] = t[k],t[n]
n = n - 1
end
返回 t
结束
local misImagenes ={"rec/ro.png","rec/az.png","rec/ros.png","rec/ne.png","rec/ve.png","rec/am.png"}
local randomImages = {}
-- 为randomImages拷贝misImagenes。
for i,v in ipairs(misImagenes)做randomImages[i] = v结尾
-- 洗牌新数组。这将随机化其内容的顺序。
shuffle(randomImages)
-- 由于你只想要两个独特的图片凑成6个矩形,
-- 我们将不得不随机复制和覆盖其他4个矩形。
for i = 1+2,6做
randomImages[i] = randomImages[math.random(1,2)]
结束
-- 现在用newImageRect来过滤数组
for i=1, #randomImages做
randomImages[i] = display.newImageRect(randomImages[i],340,280)
结束
-- randomImages现在包含了所有你随机的图片矩形。
这个shuffle算法是从这里借来的,以示例说明这个过程如何工作。
2014-01-04 21:08:00
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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中获取用户配置主目录的跨平台方法
如果您执行以下操作
var1 = randomRan var2 = randomRan那么 var1 和 var2 将具有相同的值 - 每次评估时并不会重新计算 randomRan。如果这就是您想要的结果,您可以重复用于初始化 randomRan 的表达式:
var1 = randoms[math.random(1,2)] var2 = randoms[math.random(1,2)]如果您想避免重新打字这个复杂表达式,您可以将其封装在一个函数中:
--返回一个随机图像 local function randomRan() return randoms[math.random(1,2)] end var1 = randomRan() var2 = randomRan()