如何从arc4random中排除特定的整数

时间:2015-07-03 17:24:06

标签: swift arc4random

我希望获得arc4random_uniform()的随机数,但不包括像这样的数组中的数字

var numbersArray = [8,15,10,3,7]
var randomNumber = arc4random_uniform(20)

如果arc4random_uniform()给了我numbersArray中的任何号码,我希望它能获得一个不属于numbersArray的新号码

我试过这个

func getRandomGroup() -> Int {
    for numbers in numbersArray {
        if numbers == randomNumber {
             var randomNumber = arc4random_uniform(20)
        }
    }
    return randomNumber
}

但它似乎没有效果

3 个答案:

答案 0 :(得分:5)

Swift 2.0

var numbersArray = [8,15,10,3,7]
var randomNumber : Int
repeat {
    randomNumber = Int(arc4random_uniform(20))
} while numbersArray.contains(randomNumber) 
print(randomNumber)

在Swift 1.x中就是这样做

答案 1 :(得分:0)

另一种方法:

var numbersArray: [UInt32] = [8,15,10,3,7]

func getPseudoRandom() -> UInt32 {
    let randomNumber = arc4random_uniform(20)
    if numbersArray.contains(randomNumber) {
        return getPseudoRandom()
    }
    return randomNumber
}

for _ in 0..<20 {
    print(getPseudoRandom())
}

答案 2 :(得分:0)

你可以尝试一下:

swift 2。

var numbersArray = [8,15,10,3,7]

func getRandomInArray(arr: [Int]) -> Int{
    let indexRandom = Int(arc4random() % UInt32(arr.count))
    return arr[indexRandom]
}

getRandomInArray(numbersArray)