Random 快速随机数
我对这个抽卡功能有问题 在一段时间内,它的工作方式应该是一样的,但最终它会使应用程序崩溃 代码如下:Random 快速随机数,random,swift,swift-playground,Random,Swift,Swift Playground,我对这个抽卡功能有问题 在一段时间内,它的工作方式应该是一样的,但最终它会使应用程序崩溃 代码如下: import Foundation var cardDeck = Array<PlayingCard>() class Deck { func addCard(card : PlayingCard , atTop : Bool = false){ if atTop { cardDeck.insert(card, atIndex
import Foundation
var cardDeck = Array<PlayingCard>()
class Deck {
func addCard(card : PlayingCard , atTop : Bool = false){
if atTop {
cardDeck.insert(card, atIndex: 0);
}else{
cardDeck += card
}
}
func drawRandomCard() -> PlayingCard{
var card = PlayingCard()
var randomNumber : Int = Int(arc4random()) % (cardDeck.count - 1)
card = cardDeck[randomNumber]
cardDeck.removeAtIndex(randomNumber)
return card
}
}
<代码>导入基础
var cardDeck=Array()
甲板{
func addCard(卡片:PlayingCard,atTop:Bool=false){
如果阿托普{
卡片组。插入(卡片,索引:0);
}否则{
卡片组+=卡片组
}
}
func drawRandomCard()->播放卡{
var卡=播放卡()
var randomNumber:Int=Int(arc4random())%(cardDeck.count-1)
卡片=卡片组[随机编号]
cardDeck.removeAtIndex(随机数)
回程卡
}
}
试试这个:
Int(rand())
而不是arc4random()
使用arc4random\u uniform
来避免模偏差。例如:
let randomNumber = arc4random_uniform(150)
例如,它将是:
let randomNumber = Int(arc4random_uniform(UInt32(cardDeck.count)))
你的代码是如何崩溃的?是否存在堆栈跟踪或错误消息?您发布在Github上的代码似乎有许多编译错误。这将如何减轻崩溃?我不是说没有,但是没有解释,我看不出有什么不同。谢谢你的建议,效果非常好。arc4random()不适合Int-type缺少任何解释为什么要使用rand而不是arc4random这个非常糟糕的答案令人惊讶的是,它有两张赞成票!需要说明的是:`rand()`是一个非常糟糕的随机数生成器,需要种子设定,因此不应使用它
arc4random()
和arc4random\u uniform()
生成加密良好的随机数,不需要种子。事实上正确,但与问题完全无关。@Kevin没有很好地解释,但与问题有关。亚当的答案不会溢出SwiftInt