Swift:确保没有两个数组是相同的
Swift: Make sure no two arrays are the same
我正在随机创建具有 4 个随机数 (1-4) 的不同数组。但是我如何确保没有两个数组是相同的呢?
例如:[1,2,3,4], [4,3,2,1], [1,2,2,1], [1,2,3,4] <- 第一个和最后一个是随机生成的,我如何检查它是否是随机的,是否再次生成,如果不是,请继续?
这是我的代码,但我认为它不起作用,因为有几次我会看到两个相同的数组...
func randomNumbersArray(i: UInt32) -> [Int] {
let r = [Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1)]
return r
}
func arrays() {
let main = randomNumbersArray(4)
qArray = main
aArray = main
bArray = randomNumbersArray(4)
cArray = randomNumbersArray(4)
dArray = randomNumbersArray(4)
if aArray == bArray || aArray == cArray || aArray == dArray ||
bArray == cArray || bArray == dArray || cArray == dArray {
bArray = randomNumbersArray(4)
cArray = randomNumbersArray(4)
dArray = randomNumbersArray(4)
}
print(aArray)
print(bArray)
print(cArray)
print(dArray)
}
创建一个数组来存储您的数组。每当你生成一个新数组时,检查 .contains(_:)
,并继续生成新数组直到它是 false
.
应该这样做:
func randomNumbersArray(i: UInt32) -> [Int] {
let r = [Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1)]
return r
}
func arrays() {
var randArrays = [[Int]]()
repeat {
let newArray = randomNumbersArray(4)
if !randArrays.contains{ [=10=] == newArray } {
randArrays.append(newArray)
}
} while randArrays.count < 4
//...
}
我正在随机创建具有 4 个随机数 (1-4) 的不同数组。但是我如何确保没有两个数组是相同的呢?
例如:[1,2,3,4], [4,3,2,1], [1,2,2,1], [1,2,3,4] <- 第一个和最后一个是随机生成的,我如何检查它是否是随机的,是否再次生成,如果不是,请继续?
这是我的代码,但我认为它不起作用,因为有几次我会看到两个相同的数组...
func randomNumbersArray(i: UInt32) -> [Int] {
let r = [Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1)]
return r
}
func arrays() {
let main = randomNumbersArray(4)
qArray = main
aArray = main
bArray = randomNumbersArray(4)
cArray = randomNumbersArray(4)
dArray = randomNumbersArray(4)
if aArray == bArray || aArray == cArray || aArray == dArray ||
bArray == cArray || bArray == dArray || cArray == dArray {
bArray = randomNumbersArray(4)
cArray = randomNumbersArray(4)
dArray = randomNumbersArray(4)
}
print(aArray)
print(bArray)
print(cArray)
print(dArray)
}
创建一个数组来存储您的数组。每当你生成一个新数组时,检查 .contains(_:)
,并继续生成新数组直到它是 false
.
应该这样做:
func randomNumbersArray(i: UInt32) -> [Int] {
let r = [Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1),
Int(arc4random_uniform(i) + 1)]
return r
}
func arrays() {
var randArrays = [[Int]]()
repeat {
let newArray = randomNumbersArray(4)
if !randArrays.contains{ [=10=] == newArray } {
randArrays.append(newArray)
}
} while randArrays.count < 4
//...
}