[Swift 2.2]:模拟arc4random用于带负数的范围

时间:2016-03-26 20:18:41

标签: arrays swift random swift2

我编写了一个函数,可以找到数组中所有元素之间的最大差异。但是我需要输入元素数组的限制[-5..20]。不幸的是它不支持UInt32。什么类似于从[-5..20]范围内随机填充数组的解决方案?谢谢!

func highDifferenceV ( n: Int) ->String{
        var a = [Int]() //array
        var dif = 0     // max difference
        var k = 0


        for _ in 0..<n {
            a.append(Int(arc4random_uniform(UInt32(20)))) // fill array


        }
        while k < a.count {  //search the greatest difference
            for i in 0..<n {
                if a[k] - a[i] > dif {
                    dif = a[k] - a[i]
                }
            }
            k++
        }
        print(a)
        return "Maximum difference =\(dif)"
    }

    highDifferenceV(75)

1 个答案:

答案 0 :(得分:3)

要使用-5...20中的值填充数组,请生成0...25范围内的数字,然后减去5

for _ in 0..<n {
    a.append(Int(arc4random_uniform(UInt32(26)))-5) // fill array
}

通常,要生成min...max范围内的值,请使用arc4random_uniform致电max - min + 1,然后添加min