我有六个变量,这些变量在屏幕上有不同的位置,我想在这些变量中放入不同的图像,因此我有一个带有图像的数组。
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"}
我将此Array的元素放入另一个具有2个不同random的Array中,如下所示:
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个不同的图像。
由于
答案 0 :(得分:0)
如果你正在做
var1 = randomRan
var2 = randomRan
然后var1和var2将具有相同的值 - 每次评估randomRan时都不会重新计算。如果这是你想要的,你可以重复用于初始化randomRan的表达式:
var1 = randoms[math.random(1,2)]
var2 = randoms[math.random(1,2)]
如果你想避免重新输入那个ocmplex表达式,你可以将它封装在一个函数中:
--Return a random image
local function randomRan()
return randoms[math.random(1,2)]
end
var1 = randomRan()
var2 = randomRan()
答案 1 :(得分:0)
看起来你想要做的事情通常被称为 shuffling 和过滤一个数组。
将randoms[math.random(1,2)]
分配给randomRan
变量后,无论如何都会保持不变。它不像randomRan
每次使用时都是随机的。但是,如果它是一个函数调用,如randomRan()
,那么这将是一个不同的情况,具体取决于函数的作用。变量一旦被赋值,通常保持不变,除非改变。
math.randomseed(os.time()) -- Make sure to seed the random number generator.
local function shuffle(t)
local n = #t
while n >= 2 do
-- n is now the last pertinent index
local k = math.random(n) -- 1 <= k <= n
-- Quick swap
t[n], t[k] = t[k], t[n]
n = n - 1
end
return t
end
local misImagenes = {"rec/ro.png", "rec/az.png", "rec/ros.png", "rec/ne.png", "rec/ve.png", "rec/am.png"}
local randomImages = {}
-- Make a copy of misImagenes for randomImages.
for i, v in ipairs(misImagenes) do randomImages[i] = v end
-- Shuffle the new array. This will randomize the order of its contents.
shuffle(randomImages)
-- Since you want only two unique images for a total of six rectangles,
-- we'll have to duplicate and overwrite the other four, randomly.
for i = 1+2, 6 do
randomImages[i] = randomImages[math.random(1, 2)]
end
-- Now to filter the array with newImageRect.
for i=1, #randomImages do
randomImages[i] = display.newImageRect(randomImages[i], 340, 280)
end
-- randomImages now contains all of your randomized image rectangles.
shuffle算法是从here借来的,以展示一个如何运作的例子。