Hi i get error after Swift3. How can i fix this error? These methods provide non-repeated random numbers.
func uniqueRandoms(_ count: Int, inRange range: Range<Int>, blacklist: [Int] = []) -> [Int] {
var r = [Int](range)
.filter{ !blacklist.contains($0) }
.shuffle()
return Array(r[0..<count])
}
extension Array {
func shuffle() -> Array<Element> {
var newArray = self
for i in 0..<newArray.count {
let j = Int(arc4random_uniform(UInt32(newArray.count)))
guard i != j else { continue }
swap(&newArray[i], &newArray[j])
}
return newArray
}
}
Thanks
Use the lowerBound
and upperBound
property of range to create sequence for Array of [Int]
.
var r = [Int](range.lowerBound..<range.upperBound)
I would suggest you use CountableRange<Int>
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With