arc4random的Swift 3语法

4

我用Swift 2制作了一个问答应用程序,现在我想将语法从random更改为arc4random...

if Questions.count > 0 && counter <= 15 {
            QNumber = arc4random()% Questions.count
            QLabel.text = Questions[QNumber].Question

        AnswerNumber = Questions[QNumber].Answer

        for i in 0..<Buttons.count{
            Buttons[i].setTitle(Questions[QNumber].Answers[i], for: UIControlState())
        }
        Questions.remove(at: QNumber)
    }

2
我不确定我理解你的问题。 (另外,没有必要使用模数运算符; 您应该使用带参数的“arc4random_uniform”,因为这将避免模数偏差)。 - Matt Gibson
2
请考虑遵循命名约定,变量名以小写字母开头。你的代码非常难以阅读。 - vadian
2个回答

4

建议使用arc4random_uniform而不是简单的arc4random

arc4random_uniform需要一个UInt32参数,所以你需要来回转换值。

qNumber = Int(arc4random_uniform(UInt32(questions.count)))

上限是否包含在可能的结果中?例如,如果questions.count为100,arc4random_uniform会生成一个介于0-99(包括0和99)或1-100(包括1和100)之间的随机数? - zeeple
从文件文档中得知:arc4random()函数返回介于0到(2**32)-1之间的伪随机数,因此如果你需要1-100之间的数字,传递的参数应该是99,然后再加上1。 - vadian

2
这是一个使用arc4random_uniform()函数的例子。该函数需要与UInt32通信,这就需要在类型之间进行一些转换。
let questions = ["What is love?", "What's the capital of Mongolia?"]
let index = Int(arc4random_uniform(UInt32(questions.count)))
print(questions[index])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接