8

我在使用这个 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
    }

}
4

2 回答 2

37

用于arc4random_uniform避免模偏差。如下:

let randomNumber = arc4random_uniform(150)

对于您的示例,它将是:

let randomNumber = Int(arc4random_uniform(UInt32(cardDeck.count)))
于 2014-06-09T11:58:07.043 回答
-4

试试这个:Int(rand())而不是arc4random()

于 2014-06-09T11:54:47.823 回答