, 당신은 CGPoint
을 사용하거나 정의 할 수 있습니다 자신의 Point
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: [(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))
}
문제의 크기에 따라 가능한 모든 값의 배열을 만든 다음 전나무를 섞은 다음 st X
요소를 추가 할 때마다 새로운 임의의 점 집합이 필요합니다. 당신은 그것을 더 최적화 할 수 있지만, code'd는 비슷한 모양 : 당신은 더욱이 솔루션을 최적화 할 수 있지만이 데이터 세트에 대한 자세한 내용을 알고하는 데 필요한 것
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)
. 희망이 도움이
예, 맞아요, 내 샘플 코드를 업데이 트하겠습니다 –
나는 거의 동일한 코드를 작성 했으므로 upvoted! :-) – vacawama
var live = Array>() –