代码:
func getRandomValues(amountOfValues:Int, totalAmount:Int) -> [Int]?{
if amountOfValues < 1{
var amountOfValues = 4
}
if totalAmount < 1{
return nil
}
var values:[Int] = []
var valueLeft = totalAmount
for i in 0..<amountOfValues{
if i == amountOfValues - 1{
values.append(valueLeft)
break
}
var value = Int(arc4random_uniform(UInt32(valueLeft - (amountOfValues - i))) + 1)
valueLeft -= value
if(value != 0){
values.append(value)
}
}
BtnValues = values
return values
}
amountofvalues是一个包含int的变量,totalamount也是一个int。此函数根据要达到总量的值的数量生成随机值。
所以,如果你有amountofvalues = 5和totalamount = 10,那么函数会返回如下内容:2,3,1,2,2这就像魅力一样。
但有时我会收到此错误:exc_bad_instruction(code = exc_i386_invop,subcode = 0x0)
我不知道如何解决这个错误来自此箭头所在的行:
--------->var value = Int(arc4random_uniform(UInt32(valueLeft - (amountOfValues - i))))