Произведенные числа должны отличаться друг от друга с помощью arc4random - PullRequest
0 голосов
/ 27 августа 2018

Я хочу использовать arc4random, но полученные числа должны отличаться друг от друга.

Как мне сделать этот пример?

Ответы [ 3 ]

0 голосов
/ 27 августа 2018

Как насчет этого:

let desired = 20
var randomSet: Set<Int> = [] //Sets guarantee uniqueness
var array: [Int] = [] //Use arrays to guarantee the order

while array.count < desired {
    let random = Int(arc4random())
    if !randomSet.contains(random) {
        array.append(random)
        randomSet.insert(random)
    }
}

Или, используя предложение LeoDaubus:

while array.count < desired {
    let random = Int(arc4random())
    if randomSet.insert(random).inserted {
        array.append(random)
    }
}
0 голосов
/ 27 августа 2018

Вы можете использовать набор, чтобы проверить, было ли вставлено случайное число, добавляя члена после проверки, было ли оно вставлено:

var set: Set<Int> = []
var randomElements: [Int] = []
let numberOfElements = 10
while set.count < numberOfElements {
    let random = Int(arc4random_uniform(10))  //  0...9
    set.insert(random).inserted ? randomElements.append(random) : ()
}
print(randomElements) // "[5, 2, 8, 0, 7, 1, 4, 3, 6, 9]\n"
0 голосов
/ 27 августа 2018

Вы можете использовать Set, чтобы легко добиться этого:

var randomSet: Set<Int> = [] //Sets guarantee uniqueness
var array: [Int] = [] //Use arrays to guarantee the order
while randomSet.count < 2 {
    randomSet.insert(Int(arc4random())) //Whatever random number generator you use
}
for number in randomSet {
    array.append(number)
}
//Now you can use the array for your operations
...