从两个不同的数组中选择随机图像

时间:2016-08-23 15:50:11

标签: ios arrays swift arc4random

我需要从两个不同的数组中随机发送一个图像到UIImageView。我不知道如何处理这个?

var imgSetOne: [String] = ["car1.png", "car2.png", "car3.png", "car4.png", "car5.png"]
let imgOneRandom = Int(arc4random_uniform(5))

var imgSetTwo: [String] = ["bus1.png", "bus2.png", "bus3.png", "bus4.png", "bus5.png"]
let imgTwoRandom = Int(arc4random_uniform(5))

UIImage(named: imgSetOne[imgOneRandom]) OR UIImage(named: imgSetTwo[imgTwoRandom])

我正在尝试使用arc4random_uniform从第一个数组和第二个数组中选择随机图像。现在我想显示从第一个数组结果或第二个数组结果到UIImageView的图像。

3 个答案:

答案 0 :(得分:4)

如果您的阵列具有相同的大小,那么您可以选择阵列随机选择图像:

let arrayIndex = Int(arc4random_uniform(2))
UIImage(named: arrayIndex == 0 ? imgSetOne[imgOneRandom] : imgSetTwo[imgTwoRandom])

请注意,如果数组具有不同的大小,并且您仍然希望从两个阵列中选择具有相同概率的每个图像,则需要稍微调整一下这个逻辑(将其留作作业除外)

答案 1 :(得分:0)

基于@Vladimir answer,您可以为此创建运算符:

func ||(left: String, right: String) -> String {
    let isRight = Int(arc4random_uniform(2))
    return isRight == 1 ? right : left
}

并像这样使用:

UIImage(named: "left" || "right")

答案 2 :(得分:0)

Vladimir's answer完全符合您的需要。如果你需要选择2个以上,你可以这样做:

let imgSetOne = ["car1.png", "car2.png", "car3.png", "car4.png", "car5.png"]
let imgOneRandom = imgSetOne[Int(arc4random_uniform(UInt(imgSetOne.count)))]

let imgSetTwo = ["bus1.png", "bus2.png", "bus3.png", "bus4.png", "bus5.png"]
let imgTwoRandom = imgSetTwo[Int(arc4random_uniform(UInt(imgSetTwo.count)))]

let candidates = [imgOneRandom, imgTwoRandom]
let finalPick = candidates[Int(arc4random_uniform(UInt(candidates.count)))]
UIImage(named: finalPick)