Swift中的负随机数

时间:2015-06-24 10:26:01

标签: swift

我正在快速开发iPhone应用程序,并且我要求始终生成 NEGATIVE 随机数。

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

5 个答案:

答案 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)


#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>

#2。 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

#3。 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 方法

RangerandomElement()通过遵循randomElement(using:)协议获得randomElement()randomElement(using:)方法。 Range具有以下声明:

ClosedRange
  

返回集合的随机元素。

您可以调用Collection从范围或封闭范围中选择一个随机元素。本示例从负数范围内随机选择一个数字:

randomElement()