2017-05-06 125 views
1

隨機元件發生我有7個元素的數組: VAR myArray的= [0,0,0,0,0,0,0]獲得從夫特陣列

我隨機處理過程中翻轉這些0以1點的: var myArray = [1,0,0,1,0,1,1]

我的問題是,我該如何得到仍爲零的隨機元素之一?例如,我希望系統能夠採取上面的第二個數組,並隨機選擇索引1,2或4.

這讓我難倒了幾個小時,任何幫助將不勝感激!

回答

1

您可以枚舉數組,過濾元素等於零並映射元素偏移量。然後你只需要使用arc4random_uniform來隨機選擇其中的一個:

let myArray = [1, 0, 0, 1, 0, 1, 1] 

let myZeroIndices = myArray.enumerated() 
          .filter{ $0.element == 0 } 
          .map{ $0.offset }   // [1, 2, 4] 

let randomIndice = myZeroIndices[Int(arc4random_uniform(UInt32(myZeroIndices.count)))] // 4 
+1

完美的工作 - 你先生,是一個紳士和學者,謝謝你! – tbaldw02

+0

不用客氣 –