select 来自两个不同数组的随机图像

select random image from two different arrays

我需要从两个不同的数组中随机向 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])

我正在尝试 select 使用 arc4random_uniform 来自第一个数组和第二个数组的随机图像。现在我想将来自第一个数组结果或第二个数组结果的图像显示到 UIImageView。

如果你的数组有相同的大小,那么你可以只select数组来随机选择图像:

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

请注意,如果数组的大小不同,并且您仍然希望以相同的概率从两个数组中选择每个图像,则您需要稍微调整此逻辑(将其留作作业练习)

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

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

并像这样使用:

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

正是您所需要的。如果您需要选择超过 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)