本文介绍了斯威夫特随机数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用drawRandomCard函数时遇到问题.

I'm having problems with this drawRandomCard function.

它可以正常工作一段时间,但最终它使应用程序崩溃.

It works just like it should for some time, but eventually it crashes the application.

这是代码:

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
    }

}

推荐答案

使用arc4random_uniform避免模偏差.如下所示:

Use arc4random_uniform to avoid modulo bias. Like following:

let randomNumber = arc4random_uniform(150)

以您的示例为例,

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

这篇关于斯威夫特随机数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 14:52