我正在快速开发iPhone应用程序,并且我要求始终生成 NEGATIVE 随机数。
我知道生成随机数的方法,但似乎并没有找到一种方法来生成负数。
答案 0 :(得分:12)
请尝试使用此
let lowerValue = -100
let upperValue = 0
let result = Int(arc4random_uniform(UInt32(upperValue - lowerValue + 1))) + lowerValue
print(result)
Output
<强> -81 强>
答案 1 :(得分: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)))
}
}
用法示例:
Int.random(-10...0)
它来自RandomKit库 - 它看起来非常适用于各种用途。
答案 2 :(得分:4)
var randomNumber = -1 * Int(arc4random_uniform(UInt32(5)))
5将确保生成随机数,但为零到五。
答案 3 :(得分:1)
使用 Swift 4.2 ,使用Int.random
等新的随机方法可以简化这一过程。您可以阅读有关更改的更多详细信息here。
答案 4 :(得分:1)
Int
的{{1}}方法在Swift 5中,random(in:)
有一个称为random(in:)
的类型方法。 Int
具有以下声明:
random(in:)
返回指定范围内的随机值。
下面的Playground示例代码演示如何将static func random(in range: Range<Int>) -> Int
与一系列负整数一起使用,以便从它们中获得负随机数:
random(in:)
let range = -70 ..< -50
let randomNumber = Int.random(in: range)
print(randomNumber) // prints: -57
let closedRange = Int.min ..< 0
let randomNumber = Int.random(in: closedRange)
print(randomNumber) // prints: -7618449904516816385
还有一个名为random(in:)
的类型方法,它接受类型为Int
的参数:
ClosedRange<Int>
let closedRange = -70 ... -50
let randomNumber = Int.random(in: closedRange)
print(randomNumber) // prints: -66
的{{1}}方法如果需要,您可以使用给定的生成器作为随机源,使用random(in:using:)
返回指定范围内的随机值。 Int
具有以下声明:
random(in:using:)
使用给定的生成器作为随机性源,返回指定范围内的随机值。
用法:
random(in:using:)
请注意,static func random<T>(in range: Range<Int>, using generator: inout T) -> Int where T : RandomNumberGenerator
具有等效的random(in:using:)
,它接受封闭范围作为其参数:
let range = -70 ..< -50
var randomNumberGenerator = SystemRandomNumberGenerator() // replace with custom generator
let randomNumber = Int.random(in: range, using: &randomNumberGenerator)
print(randomNumber) // prints: -52
random(in:using:)
的{{1}}和let range = -70 ... -50
var randomNumberGenerator = SystemRandomNumberGenerator() // replace with custom generator
let randomNumber = Int.random(in: range, using: &randomNumberGenerator)
print(randomNumber) // prints: -58
方法 Range
和randomElement()
通过遵循randomElement(using:)
协议获得randomElement()
和randomElement(using:)
方法。 Range
具有以下声明:
ClosedRange
返回集合的随机元素。
您可以调用Collection
从范围或封闭范围中选择一个随机元素。本示例从负数范围内随机选择一个数字:
randomElement()