一个数组中的随机数。

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

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个不同的图像。

谢谢

点赞
用户90511
用户90511

如果您执行以下操作

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()
2014-01-04 19:59:02
用户828255
用户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