SwiftUI -如何获得一定范围内的随机数



我想在getImage方法中引入一个一定范围内的随机数。(我想要20个数字中的4个随机值)

这很难解释,所以我将用代码代替。

struct LoveBackgroundView: View {
var itemsPerRow = 4
func getNumberOfRows() -> Int {
let heightPerItem = UIScreen.main.bounds.width/CGFloat(self.itemsPerRow)
return Int(UIScreen.main.bounds.height/heightPerItem) -2
func getImage(indedxLocation: Int) -> String {
let getNumber = indexLocation % 20   // value is 0 ~ 19
let getRandom = getNumber.random(in: 0 ..< 4)  // I want to solve this part
return String(getRandom)
}
var body: some View {
VStack(spacing: 0) {
ForEach(0 ..< getNumberOfRows()) { i in
HStack(spacing: 0) {
ForEach(0 ..< self.itemsPerRow) { j in
Image(self.getImage(indexLocation: (i * self.itemsPerRow) + j))

...

}
}
}
}
}

这段代码是按照我想要的方式编写的,我想知道这段代码的正确逻辑。

谢谢。

您可以实现一个简单的扩展来返回多个随机元素:

extension Collection {
func randomElements(count: Int) -> ArraySlice<Element> { shuffled().prefix(count) }
}

你可以这样写:

(1...50).randomElements(count: 4) // [42, 23, 11, 3]

最新更新