2014-10-05 75 views
2

在此代碼中,第2行遍歷數組並輸出它接收的內容及其隨機數。但有時我會兩次得到同樣的東西,比如它會說「Straub」,然後是「Straub」,然後是其他的「Rusher」。我試圖做一個「做while循環」,但我不知道如何將它設置在不重複的地方。順便說一下,這種迅速的編程語言。iOS編程:使用do while循環使arc4_random不重複自身

let types = ["Alex", "Straub", "Rusher", "Graser"] 

let type = types[Int(arc4random_uniform(UInt32(types.count)))] 

println(type) 

如果您有任何疑問,請張貼在評論部分

+0

當你滾骰子有機會獲得同樣數目的兩倍連續... – zisoft 2014-10-05 16:27:31

+0

你能發佈更多的代碼嗎? – 2014-10-05 16:28:45

+0

@SteveRosenberg @SteveRosenberg即我所有的代碼我想要名稱顯示,但我不想重複。我希望他們都是隨機的,但沒有重複。 – alex 2014-10-05 16:35:07

回答

1

這避免了直接重複:

var lastIndex = -1 
var index = -1 

let types = ["Alex", "Straub", "Rusher", "Graser"] 

do { 
    index = Int(arc4random_uniform(UInt32(types.count))) 
} while index == lastIndex 

println(types[index]) 
lastIndex = index 
+0

這段代碼產生一兩次,它會說亞歷克斯亞歷克斯亞歷克斯亞歷克斯亞歷克斯然後Straub我需要它,所以它不重複自己,但仍然有點隨機 – alex 2014-10-05 16:54:59