美文网首页
在一定范围内生成随机数

在一定范围内生成随机数

作者: 落叶刺客 | 来源:发表于2017-08-12 22:39 被阅读54次
    问题:给定一个最小正整数和一个最大正整数,如何在它们之间生成随机数(包含上下界)?

      如果你有一定的开发经验,肯定用过随机颜色对某些控件做调试。实际上,生成随机颜色的实质也就是在一定范围内生成随机数。常用的生成随机数的函数是arc4random_uniform(_ __upper_bound: UInt32) -> UInt32,在使用它的时候有几点需要注意:

    1、它生成的随机数范围是[0, +∞);
    2、它所使用数值的类型是UInt32,并不是Int,因此需要做类型转换。

      因为使用arc4random_uniform(_ : )函数生成的随机数不包含上界,但是我们的题目要求包含上界,所以在上下界相减时需要加1,以确保程序通过:

    func challenge(min: Int, max: Int) -> Int {
        return Int(arc4random_uniform(UInt32(max - min + 1))) + min
    }
    
    challenge(min: 2, max: 30)
    

      最后再给一个随机颜色的代码。我们可以考虑给UIColor写一个扩展,将随机颜色的代码写在它的扩展中,这样使用的时候回比较方便:

    extension UIColor {
        
        // RGB
        convenience init(r: CGFloat, g: CGFloat, b: CGFloat, alpha: CGFloat = 1.0) {
            self.init(red: r / 255.0, green: g / 255.0, blue: b / 255.0, alpha: alpha)
        }
        
        // 随机颜色
        class func randomColor() -> UIColor {
            return UIColor(r: CGFloat(arc4random_uniform(256)), g: CGFloat(arc4random_uniform(256)), b: CGFloat(arc4random_uniform(256)))
        }
    }
    

    相关文章

      网友评论

          本文标题:在一定范围内生成随机数

          本文链接:https://www.haomeiwen.com/subject/aezjrxtx.html