Sdk 一个数组中的随机数

Sdk 一个数组中的随机数,sdk,lua,coronasdk,Sdk,Lua,Coronasdk,我有六个变量,这些变量在屏幕上有不同的位置,我想在这些变量中放置不同的图像,因此我有一个包含图像的数组 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"} 我将这个数组的元素放入另一个数组中,该数组有两个不同的随机数,如下所示: randoms = {[1] = misImagenes[math.

我有六个变量,这些变量在屏幕上有不同的位置,我想在这些变量中放置不同的图像,因此我有一个包含图像的数组

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"}
我将这个数组的元素放入另一个数组中,该数组有两个不同的随机数,如下所示:

randoms = {[1] = misImagenes[math.random(1,6)],[2] = misImagenes[math.random(1,6)] } 
所以,我想把这个随机的形式,因此,我创建了一个随机的形式

randomRan = randoms[math.random(1,2)]

我将随机数放入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)
这个变量有随机变量,但是图像总是相等的,我需要图像是不同的,随机变量中有两个不同的图像

如果您正在做,谢谢

var1 = randomRan
var2 = randomRan
然后var1和var2将具有相同的值-randomRan不会在每次计算其值时重新计算。YI如果这是您想要的,您可以重复用于初始化randomRan的表达式:

var1 = randoms[math.random(1,2)]
var2 = randoms[math.random(1,2)]
如果您想避免重新键入该Ocplex表达式,可以将其封装在函数中:

--Return a random image
local function randomRan()
   return randoms[math.random(1,2)]
end

var1 = randomRan()
var2 = randomRan()

看起来您要做的通常称为洗牌和过滤数组

一旦将
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.
math.randomseed(os.time())--确保为随机数生成器设置种子。
局部函数洗牌(t)
本地n=#t
当n>=2时
--n现在是最后一个相关索引

局部k=math.random(n)--1“我把randomRan放入6个变量中,”你是什么意思?请显示代码。您不需要像Lua中的表那样命名数组的数字索引
{'rec/ro.png','rec/az.png'}
等。工作正常。你能给出一个预期输出的例子吗?我把随机数放入6个显示图像的变量中。我不能这样做,因为我不能将函数放入显示图像的变量中。可能不是函数,但函数调用如何<代码>显示.newImageRect(randomRan(),340280)