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

Swift 如何从arc4random中排除特定整数,swift,arc4random,Swift,Arc4random,我想得到一个arc4random_均匀的随机数,但不包括像这样的数组中的数字 var numbersArray = [8,15,10,3,7] var randomNumber = arc4random_uniform(20) 如果arc4random_统一给我一个数字数组中的任何数字,我希望它得到一个不是数字数组中的新数字 我试过这个 func getRandomGroup() -> Int { for numbers in numbersArray { if

我想得到一个arc4random_均匀的随机数,但不包括像这样的数组中的数字

var numbersArray = [8,15,10,3,7]
var randomNumber = arc4random_uniform(20)
如果arc4random_统一给我一个数字数组中的任何数字,我希望它得到一个不是数字数组中的新数字

我试过这个

func getRandomGroup() -> Int {
    for numbers in numbersArray {
        if numbers == randomNumber {
             var randomNumber = arc4random_uniform(20)
        }
    }
    return randomNumber
}
但它似乎不起作用

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中,它是do,而另一种方法是:

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

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

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

getRandomInArray(numbersArray)

只需重复创建一个随机数,直到得到一个不在数组中的随机数。。。你试过什么吗?欢迎来到Stack Overflow。这不是一个为我编写代码的网站。这是一个网站,您可以从中获得有关特定编码问题的帮助。请自己尝试解决这个问题,如果您无法解决,请发布您尝试过的内容,我们将帮助您调试。很抱歉@Duncac,我忘记编写我为解决这个问题而编写的代码。我用代码更新了帖子。很好的答案。你赢了我。尽管如此,由于Swift 2.0处于早期测试阶段,我可能会将Swift 1.2语法显示为主要语法,并将Swift 2.0语法列为备选语法。