gpt4 book ai didi

ios - Swift 中的随机数

转载 作者:可可西里 更新时间:2023-10-31 23:59:33 50 4
gpt4 key购买 nike

我想创建随机数以显示在应用程序正面的 5 个 UIImage 框中。但是,我希望这些数字不总是在同一范围内。例如,我的下面代码显示 0 ... 9 表示 randomPoolBallIndex3。但是相反,我希望它显示 0 ... 49 中的任何数字,但不要在其他 randomPoolBallIndex 上重复相同的数字。所以每次按下按钮都不会显示,比方说 1、1、34、35 和 50,而是每个数字都会不同。

有办法解决这个问题吗?

我将数组从 0 ... 49 分解为每个 randomPoolBallIndex,但现在它们只会显示我设置的范围,我并不完全满意,虽然它解决了重复问题。

代码如下:

let ballArray = ["poolball1","poolball2","poolball3","poolball4","poolball5","poolball6","poolball7","poolball8","poolball9","poolball10","poolball11","poolball12","poolball13","poolball14","poolball15","poolball16","poolball17","poolball18","poolball19","poolball20","poolball21","poolball22","poolball23","poolball24","poolball25","poolball26","poolball27","poolball28","poolball29","poolball30","poolball31","poolball32","poolball33","poolball34","poolball35","poolball36","poolball37","poolball38","poolball39","poolball40","poolball41","poolball42","poolball43","poolball44","poolball45","poolball46","poolball47","poolball48","poolball49","poolball50"]

var randomPoolBallIndex: Int = 0
var randomPoolBallIndex1: Int = 0
var randomPoolBallIndex2: Int = 0
var randomPoolBallIndex3: Int = 0
var randomPoolBallIndex4: Int = 0
var randomPoolBallIndex5: Int = 0

@IBOutlet weak var poolBallView1: UIImageView!
@IBOutlet weak var poolBallView2: UIImageView!
@IBOutlet weak var poolBallView3: UIImageView!
@IBOutlet weak var poolBallView4: UIImageView!
@IBOutlet weak var poolBallView5: UIImageView!

@IBAction func buttonPressed(_ sender: UIButton) {
randomPoolBallIndex1 = Int.random(in: 20 ... 29)
randomPoolBallIndex2 = Int.random(in: 40 ... 49)
randomPoolBallIndex3 = Int.random(in: 0 ... 9)
randomPoolBallIndex4 = Int.random(in: 30 ... 39)
randomPoolBallIndex5 = Int.random(in: 10 ... 19)

poolBallView1.image = UIImage(named: ballArray[randomPoolBallIndex1])
poolBallView2.image = UIImage(named: ballArray[randomPoolBallIndex2])
poolBallView3.image = UIImage(named: ballArray[randomPoolBallIndex3])
poolBallView4.image = UIImage(named: ballArray[randomPoolBallIndex4])
poolBallView5.image = UIImage(named: ballArray[randomPoolBallIndex5])

最佳答案

使用随机播放

我想您只需要从 ballArray 中获取 5 个不同的随机台球名称。所以你不需要生成任何随机数。就在 buttonPressed 从打乱的 ballArray 中创建一个常量

let shuffledBallArray = ballArray.shuffled()

现在像这样设置图像:

poolBallView1.image = UIImage(named: shuffledBallArray[0])
poolBallView2.image = UIImage(named: shuffledBallArray[1])
...

所以你的 buttonPressed Action 应该是这样的:

@IBAction func buttonPressed(_ sender: UIButton) {

let shuffledBallArray = ballArray.shuffled()

poolBallView1.image = UIImage(named: shuffledBallArray[0])
poolBallView2.image = UIImage(named: shuffledBallArray[1])
poolBallView3.image = UIImage(named: shuffledBallArray[2])
poolBallView4.image = UIImage(named: shuffledBallArray[3])
poolBallView5.image = UIImage(named: shuffledBallArray[4])
}

创建唯一的随机数

或者你可以创建一个函数,给你 5 个唯一的随机数

func generateNumbers(repetitions: Int, maxValue: Int) -> [Int] {

var numbers = [Int]()

for _ in 1...repetitions {
var n: Int
repeat {
n = Int.random(in: 1...maxValue)
} while numbers.contains(n)
numbers.append(n)
}

return numbers
}

buttonPressed 中,只需为这个随机数数组创建常量并设置图像,而无需在硬编码的 50 个名称的 ballArray 中的某处保存任何图像名称

@IBAction func buttonPressed(_ sender: UIButton) {

let randomNumbers = generateNumbers(repetitions: 5, maxValue: 50)

poolBallView1.image = UIImage(named: "poolBall\(randomNumbers[0])")
poolBallView2.image = UIImage(named: "poolBall\(randomNumbers[1])")
poolBallView3.image = UIImage(named: "poolBall\(randomNumbers[2])")
poolBallView4.image = UIImage(named: "poolBall\(randomNumbers[3])")
poolBallView5.image = UIImage(named: "poolBall\(randomNumbers[4])")
}

关于ios - Swift 中的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53286075/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com