[英]Negative random number in Swift
我正在開發一個快速的iPhone應用程序,並且有一個要求我總是要生成負的隨機數。
我知道生成隨機數的方法,但似乎並沒有想出一種只產生負數的方法。
請嘗試使用這個
let lowerValue = -100
let upperValue = 0
let result = Int(arc4random_uniform(UInt32(upperValue - lowerValue + 1))) + lowerValue
print(result)
Output
-81
這是你的功能,我相信:
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庫 - 它看起來非常有用於各種目的。
var randomNumber = -1 * Int(arc4random_uniform(UInt32(5)))
5將確保隨機數生成為零到五。
Int
的random(in:)
方法 使用Swift 5, Int
有一個名為random(in:)
的類型方法。 random(in:)
具有以下聲明:
static func random(in range: Range<Int>) -> Int
返回指定范圍內的隨機值。
以下Playground示例代碼顯示了如何使用帶有一系列負整數的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
Int
還有一個名為random(in:)
的類型方法random(in:)
它接受ClosedRange<Int>
類型的參數:
let closedRange = -70 ... -50
let randomNumber = Int.random(in: closedRange)
print(randomNumber) // prints: -66
Int
的random(in:using:)
方法 如果需要,您可以使用random(in:using:)
使用自定義生成器作為隨機源返回指定范圍內的隨機值。 random(in:using:)
具有以下聲明:
static func random<T>(in range: Range<Int>, using generator: inout T) -> Int where T : RandomNumberGenerator
返回指定范圍內的隨機值,使用給定生成器作為隨機源。
用法:
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:)
具有等效的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: -58
Range
的randomElement()
和randomElement(using:)
方法 Range
和ClosedRange
通過符合Collection
協議獲取randomElement()
和randomElement(using:)
方法。 randomElement()
具有以下聲明:
func randomElement() -> Bound?
返回集合的隨機元素。
您可以調用randomElement()
從范圍或閉合范圍中選擇隨機元素。 此示例從一系列負數中隨機選取一個數字:
let range = -70 ..< -50
let randomNumber = range.randomElement()
print(randomNumber) // prints: Optional(-64)
使用Swift 4.2 ,使用新的隨機方法(如Int.random
。 您可以在此處閱讀有關更改的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.