首页 > 解决方案 > 处理成堆时消除重复的随机牌

问题描述

这是我在选择发牌按钮时在两堆上生成随机牌的代码,但有时我在两堆上都得到相同的牌,我该如何消除这个问题?谢谢

Xcode 10.1

@IBAction func deal(_ sender: Any) {

    let leftNumber = Int.random(in: 2...53)

    let rightNumber = Int.random(in: 2...53)



    leftPile.image = UIImage(named: "c\(leftNumber)")

    rightPile.image = UIImage(named: "c\(rightNumber)")
}

标签: swift

解决方案


试试这个,你总会得到不同的号码。

var leftNumber = 2
var rightNumber = 2

while leftNumber == rightNumber {
    leftNumber = Int.random(in: 2...53)
    rightNumber = Int.random(in: 2...53)
}

print(leftNumber)
print(rightNumber)

或者对于更易读的方法,您可以使用这个。

func generateRandom(completion: (Int, Int) -> Void) {
    var leftNumber = 2
    var rightNumber = 2

    while leftNumber == rightNumber {
        leftNumber = Int.random(in: 2...53)
        rightNumber = Int.random(in: 2...53)
    }

    completion(leftNumber, rightNumber)
}

generateRandom { (leftNum, rightNum) in
    print(leftNum)
    print(rightNum)
}

推荐阅读