我想在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]