swift - 处理成堆时消除重复的随机牌
问题描述
这是我在选择发牌按钮时在两堆上生成随机牌的代码,但有时我在两堆上都得到相同的牌,我该如何消除这个问题?谢谢
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)")
}
解决方案
试试这个,你总会得到不同的号码。
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)
}
推荐阅读
- ansible - Ansible - 合并和合并列表
- python - 未定义使用 tkinter root 的 python 错误
- python - 如何从 python/pygame 中的文件夹导入多个图像
- python - 读取 JSON 文件收到错误消息
- python - 根据用户对消息的反应显示另一页信息 (discord.py)
- c++ - ctor 错误函数已定义且具有不同类型的 c++ 或 mql
- python - 即使所有字段都有值,django is_valid 也会为模型表单返回 false
- java - 如何修复异常 java.lang.StringIndexOutOfBoundsException?
- google-cloud-data-fusion - 谷歌云数据融合校验和文件 csv
- python - 从三个数据帧动态创建字符串