Swift中的负随机数

Swift中的负随机数,swift,Swift,我正在用swift开发一个iPhone应用程序,我需要始终生成负随机数 我知道生成随机数的方法,但似乎没有找到只生成负数的方法 请尝试使用这个 let lowerValue = -100 let upperValue = 0 let result = Int(arc4random_uniform(UInt32(upperValue - lowerValue + 1))) + lowerValue print(result) Output -81 5将确保通过0到5生成随机数。这是您的函

我正在用swift开发一个iPhone应用程序,我需要始终生成负随机数


我知道生成随机数的方法,但似乎没有找到只生成负数的方法

请尝试使用这个

let lowerValue = -100
let upperValue = 0
let result = Int(arc4random_uniform(UInt32(upperValue - lowerValue + 1))) +   lowerValue

print(result)

Output
-81


5将确保通过0到5生成随机数。

这是您的函数,我相信:

extension Int {

/// Generates a random `Int` within `0...100`
public static func random() -> Int {
    return random(0...100)
}

/// Generates a random `Int` inside of the closed interval.
public static func random(interval: ClosedInterval<Int>) -> Int {
    return interval.start + Int(arc4random_uniform(UInt32(interval.end - interval.start + 1)))
}

}
它是从库中获取的-它看起来对各种用途都非常有用。

对于Swift 4.2,使用新的随机方法(例如)使它变得更简单。您可以阅读有关更改的更多详细信息

1.Int的randomin:方法 对于Swift 5,Int有一个名为的类型方法。randomin:具有以下声明:

static func random(in range: Range<Int>) -> Int
static func random<T>(in range: Range<Int>, using generator: inout T) -> Int where T : RandomNumberGenerator
func randomElement() -> Bound?
2.Int的randomin:使用:方法 如果需要,可以使用来返回指定范围内的随机值,使用自定义生成器作为随机性源。randomin:using:具有以下声明:

static func random(in range: Range<Int>) -> Int
static func random<T>(in range: Range<Int>, using generator: inout T) -> Int where T : RandomNumberGenerator
func randomElement() -> Bound?
3.范围的随机化元素和随机化元素使用:方法 范围和闭合范围通过符合采集协议获取和方法。randomElement具有以下声明:

static func random(in range: Range<Int>) -> Int
static func random<T>(in range: Range<Int>, using generator: inout T) -> Int where T : RandomNumberGenerator
func randomElement() -> Bound?
返回集合的随机元素

您可以调用randomElement从范围或闭合范围中选择随机元素。本例从一系列负数中随机选取一个数字:

let range = -70 ..< -50
let randomNumber = range.randomElement()
print(randomNumber) // prints: Optional(-64)

你能把结果乘以-1吗?你想要什么范围,什么分布?你使用的生成器返回什么?有很多临时方法,比如与-1相乘,不过我想知道Swift中是否定义了一些具体的方法。@BathSheba:目前我正在使用临时方法将生成的无符号随机数转换为有符号随机数。临时方法有什么问题?对你来说,这是一个代码简洁的问题还是一个随机性的质量问题?谢谢你的回答,尽管我正在寻找一个用swift定义的具体方法。奇怪的是,没有选择在Swift中实现它。@TaranGoel它是在Swift中实现的。@vacawama非常感谢,我已经找到了您最后的解决方案。@vacawama按照您的建议完成了。无论如何,非常感谢你漂亮的回答。不客气。最后一件事,请丢掉分号-更具体地说,Int.randomin:-70-50
let range = -70 ..< -50
let randomNumber = range.randomElement()
print(randomNumber) // prints: Optional(-64)