gpt4 book ai didi

swift - 如何防止函数在 Swift 4 中生成相同的随机数集

转载 作者:行者123 更新时间:2023-11-28 12:13:54 25 4
gpt4 key购买 nike

我开发了一些代码来生成五个数组,每个数组包含 1 到 49 之间的六个数字。我使用 arc4random_uniform(49) 函数来尝试做到这一点。但是,当 appendArrays() 为所有五个循环生成相同的数字集时。

 class six49: lottery {

var price: Int
var winner: [Int] = []

override init(draws: Int, lines: Int){

price = 3
super.init(draws: draws, lines: lines)
}

func appendArrays(win: inout [Int], win2: inout [[Int]]) -> [[Int]] {

while win2.count < lines {

while win.count < 6 {

let selection = arc4random_uniform(49)

if win.contains(Int(selection)){
continue
} else {
win.append(Int(selection))
win = win.sorted()

}
}

win2.append(win)

}

return win2

}

}


let result = six49(draws: 1, lines: 5)

var arr2: [[Int]] = []
var arr1: [Int] = []
var collection = result.appendArrays(win: &arr1,win2: &arr2)

print(collection)

这是输出:

[[11, 16, 27, 31, 37, 39], [11, 16, 27, 31, 37, 39], [11, 16, 27, 31, 37, 39], [11, 16, 27, 31, 37, 39], [11, 16, 27, 31, 37, 39]]

我一直在到处寻找尝试在每个循环中创建不同的数字集,但我似乎找不到任何解决方案。

最佳答案

您的问题是您从未重新初始化 win大批。一旦它有 6数字,它永远不会改变,所以你只需继续附加相同的 win阵列到你的 win2数组的数组。

而不是传递 win作为inout [Int]进入你的appendArrays方法,创建一个新的 win每次在主循环中排列。

func appendArrays(win2: inout [[Int]]) -> [[Int]] {

while win2.count < lines {

var win = [Int]()

while win.count < 6 {

let selection = arc4random_uniform(49)

if win.contains(Int(selection)){
continue
} else {
win.append(Int(selection))
win = win.sorted()
}
}

win2.append(win)
}

return win2
}

另外,不清楚您为什么要传递 win2appendArrays无论如何返回最终值。你可以创建 win2函数内部。

此外,您可以在将数组添加到 win2 之前对数组进行一次排序.

如果你想要 1...49 中的数字那么你需要添加 1给你的arc4random_uniform(49)数。

func appendArrays() -> [[Int]] {
var win2 = [[Int]]()

while win2.count < lines {
var win = [Int]()

while win.count < 6 {
let selection = Int(arc4random_uniform(49) + 1)

if !win.contains(selection) {
win.append(selection)
}
}

win.sort()

win2.append(win)
}

return win2
}

关于swift - 如何防止函数在 Swift 4 中生成相同的随机数集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47543794/

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