在Swift中生成范围内随机整数的最简单方法是什么? [英] What is the easiest way to generate random integers within a range in Swift?

查看:212
本文介绍了在Swift中生成范围内随机整数的最简单方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

到目前为止,我设计的方法是:

The method I've devised so far is this:

func randRange (lower : Int , upper : Int) -> Int {
    let difference = upper - lower
    return Int(Float(rand())/Float(RAND_MAX) * Float(difference + 1)) + lower
}

这会生成介于下限和上限之间的随机整数.

This generates random integers between lower and upper inclusive.

推荐答案

以下是它的较轻版本:

func randRange (lower: Int , upper: Int) -> Int {
    return lower + Int(arc4random_uniform(UInt32(upper - lower + 1)))
}

如果您决定此功能仅适用于无符号值,则可以进一步简化:

This can be simplified even further if you decide this function works with unsigned values only:

func randRange (lower: UInt32 , upper: UInt32) -> UInt32 {
    return lower + arc4random_uniform(upper - lower + 1)
}

或者,遵循安东(您为+1)的绝妙想法,即使用范围作为参数:

Or, following Anton's (+1 for you) excellent idea of using a range as parameter:

func random(range: Range<UInt32>) -> UInt32 {
    return range.startIndex + arc4random_uniform(range.endIndex - range.startIndex + 1)
}

这篇关于在Swift中生成范围内随机整数的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆