Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays SWIFT中随机不可重复数组的生成_Arrays_Swift_Duplicate Removal - Fatal编程技术网

Arrays SWIFT中随机不可重复数组的生成

Arrays SWIFT中随机不可重复数组的生成,arrays,swift,duplicate-removal,Arrays,Swift,Duplicate Removal,我正试图弄明白这一点,但是NSSet(array:x).allObjects只对[Int]起作用 如何生成随机不可重复数组 var x = map(1...5) { _ in arc4random_uniform(15)} let xNonRepating = NSSet(array: x).allObjects if x.count != xNonRepating.count { //do nothing } else { x = map(1...5) { _ in arc4r

我正试图弄明白这一点,但是NSSet(array:x).allObjects只对[Int]起作用

如何生成随机不可重复数组

var x = map(1...5) { _ in arc4random_uniform(15)}
let xNonRepating = NSSet(array: x).allObjects
if x.count != xNonRepating.count {
    //do nothing
} else {
    x = map(1...5) { _ in arc4random_uniform(15)}
    println(x)
}

你问的问题不是很清楚

如果希望能够不重复地从数组中提取对象,请使用以下方法:

var seedArray = ["one", "two", "three", "four", "five"]
var randomArray = Array()


func randomString -> String
{
  if randomArray.count = 0
  {
    randomArray += seedArray
  }
  return randomArray.removeAtIndex(arc4random_uniform(randomArray.count))
}

您可以调整上述方法来保存任何类型对象的数组,或者将其更改为通用数组,以便可以管理任何类型对象的数组。

首先,您必须将结果从arc4random_uniform转换为Int:

var draw = map(1...5) { _ in Int(arc4random_uniform(15))}
然后,您需要创建一个while循环,该循环仅在NSSet数组中包含的唯一元素数小于draw计数时执行

var badDrawCounter = 0
while NSSet(array: draw).count < draw.count {
    //it will only enter here if there was a repeated number in your draw
    badDrawCounter++
    println("bad draw = \(draw)")
    // lets draw it again and if the result is not ok it will stay looping until you get a good draw (no repeating numbers)
    draw = map(1...5) { _ in Int(arc4random_uniform(15))}
}

println(draw)
var badDrawCounter=0
而NSSet(数组:draw.count
能否请您的答案解释一下为什么该代码回答了这个问题?代码唯一的答案是,因为它们不教解决方案。谢谢你,这真的很有帮助:)@dunchun,很抱歉没有正确定义我的问题