Swift随机数

时间:2014-06-09 11:51:53

标签: random swift swift-playground

我在使用此drawRandomCard功能时遇到问题。

它的工作方式应该有一段时间,但最终它会崩溃应用程序。

以下是代码:

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
    }

}

2 个答案:

答案 0 :(得分:37)

使用arc4random_uniform来避免模偏差。如下:

let randomNumber = arc4random_uniform(150)

对于您的示例,它将是:

let randomNumber = Int(arc4random_uniform(UInt32(cardDeck.count)))

答案 1 :(得分:-4)

试试这个:Int(rand())代替arc4random()