我尝试生成一个随机顺序的字符串数组,但是在 randomPile 函数结束时总是出现错误 "Thread1:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)"。以下是我的代码:
import UIKit
class RandomView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var cardOrder = ["HeartSix","HeartNine", "ClubQueen", "SpadeKing" ]
// cannot randomlize due to the lanuage drawbacks.
cardOrder = randomPile(cardOrder)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// random the order of the original card pile
func randomPile(arrayPile: String[]) -> String[] {
var arry = arrayPile
for( var i = arry.count-1; i > 0; --i){
var r = Int(arc4random())%(i+1)
var a = arry[r]
arry[r] = arry[i]
arry[i] = a
}
return arry
}
}
arc4random_uniform(i+1)
来避免取模偏差。 - pjsUInt32
。 - pjsarc4random_uniform()
可以安全地转换为Int
吗?这是除了模数偏差问题之外使用它的另一个原因。 - pjs