Swift-声明二维数组包含

Swift-声明二维数组包含,swift,multidimensional-array,contains,arc4random,Swift,Multidimensional Array,Contains,Arc4random,我想说的是,如果某个2d数组包含“点”格式[Int,Int],则重新生成随机数,而不是计算迭代次数 for _ in 0..<33{ let j = Int(arc4random_uniform(10)) let k = Int(arc4random_uniform(10)) while live.contains(//The point j,k){ live.append(Array(arrayLiteral: j,k))

我想说的是,如果某个2d数组包含“点”格式[Int,Int],则重新生成随机数,而不是计算迭代次数

for _ in 0..<33{
        let j = Int(arc4random_uniform(10))
        let k = Int(arc4random_uniform(10))
        while live.contains(//The point j,k){
        live.append(Array(arrayLiteral: j,k))
            cells[j][k] = true
        }
    }

for uuu0..根据我对你的问题的理解,你想生成一个不包含重复的2D点数组,你可以使用
CGPoint
或定义你自己的

struct Point: Equatable {
    let x: Int
    let y: Int
}

func == (lhs: Point, rhs: Point) -> Bool {
    return lhs.x == rhs.x && lhs.y == rhs.y
}

var live: [Point] = []
for _ in 0..<10{

    var candidate = Point(x: Int(arc4random_uniform(10)), y: Int(arc4random_uniform(10)))
    while live.contains(candidate) {
        candidate = Point(x: Int(arc4random_uniform(10)), y: Int(arc4random_uniform(10)))
    }
    live.append(candidate)
}

您可以进一步优化此解决方案,但这需要更多地了解您的数据集。希望这有帮助

我写了几乎相同的代码,所以被选中了!:-)var live=Array()能否请您更新您的代码,在当前版本中还有未知的
单元格
数组…
var live: [(Int, Int)] = []
for _ in 0..<10{
    var j = Int(arc4random_uniform(10))
    var k = Int(arc4random_uniform(10))
    while live.contains({$0 == (j, k)}) {
        j = Int(arc4random_uniform(10))
        k = Int(arc4random_uniform(10))
    }
    live.append((j,k))
}
var possibleValues: [Point] = []
for x in 0..<5 {
    for y in 0..<5 {
        possibleValues.append(Point(x: x, y: y))
    }
}

func randomPoints(numberOfPoints: Int) -> [Point] {
    // shuffle original array without changing it
    let shuffled = possibleValues.sorted { _ in arc4random_uniform(10) > 5 }
    // take first X elements
    return Array(shuffled[0..<numberOfPoints])
}

randomPoints(numberOfPoints: 10)