如何在蘋果的Swift語言中生成隨機數?
本文將解釋如何在Swift語言中生成隨機數。
在您的iOS應用程式中,有一些常見的情況需要生成隨機值,例如:
模擬擲骰子。
洗牌。
為使用者建立唯一ID。
從集合型別中獲取隨機值。
在Swift 4.2中,有新的、簡單且安全的方法來生成隨機值。在此之前,有一個用C語言編寫的隨機函式。今天,您將學習關於`random()`函式的知識,該函式接受一個值範圍,並作為輸出,每次返回一個隨機選擇的數值。
如何使用Arc4random()函式
讓我們來看一個arc4random()函式的例子
要在Swift中生成隨機數,您可以使用`arc4random()`函式,該函式生成0到`UInt32.max`之間的隨機數。例如:
import Foundation let randomNumber = arc4random() print(randomNumber)
注意:輸出在每種情況下都是隨機的。
這將生成0到`UInt32.max`之間的隨機數,這是一個32位無符號整數,範圍為0到4,294,967,295。
示例
如果您想在特定範圍內生成隨機數,可以使用以下語法。
import Foundation let lowerRange: UInt32 = 1 let upperRange: UInt32 = 99 let randomNumber = arc4random_uniform(upperRange - lowerRange) + lowerRange print("random number: \(randomNumber)")
輸出
random number: 40
注意:輸出在每種情況下都是隨機的。
這將生成`lowerRange`和`upperRange`(包含)之間的隨機數。
請記住,`arc4random()`函式生成的是偽隨機數,這意味著它並非真正隨機,但對大多數人來說看起來是隨機的。如果您需要真正的隨機數,您可能需要考慮使用其他方法,例如使用硬體隨機數生成器生成隨機數。
生成隨機數
所有數值資料型別都支援在指定範圍內生成隨機數。您可以根據需要指定值的範圍(下限和上限)。讓我們來看一些例子:
示例
import Foundation // 1 // print random value from 1 to 99 let randomInt = Int.random(in: 1...99) print("random int: \(randomInt)") // 2 // get a random value from -10 and below to 10 let randomSignedInt = Int.random(in: -10..<10) print("random signed int: \(randomSignedInt)") // 3 // get a random float value from 0 to 1. Eg: 0.5673451 let randomFloat = Float.random(in: 0...5) print("random float: \(randomFloat)") // 4 // get true or false randomly let randomBool = Bool.random() print("random bool: \(randomBool)")
輸出
random int: 46 random signed int: -6 random float: 1.2532961 random bool: true
讓我們理解上面的例子
步驟1 - 這裡我們透過傳遞1到99的範圍來生成一個隨機Int。因此它總是返回該範圍內的數字。
步驟2 - 這裡,它將返回給定範圍(即-10到小於10)內的隨機整數。
步驟3 - 這裡,它將返回給定範圍(即0到5)內的隨機浮點數。
步驟4 - 這裡,它將返回一個隨機布林值,可以是true或false。
從集合中生成隨機值
使用Swift的`randomElement()`方法,我們可以從集合型別中獲取隨機值。
很多時候你需要從你的集合中返回隨機物件。
在進入示例之前,讓我們在這裡注意一點。`randomElement()`函式返回集合型別的可選值。建議使用`if-let`或`guard`語句(如下所示)來解包返回值,因為它有時可能會返回空值。
示例
在所有示例中,我們將使用可選繫結。例如:
// Get a random value from an array import Foundation let languages: [String] = ["Java", "C/C++", "Swift", "Python", "JavaScript"] if let randomLanguage = languages.randomElement() { print("randomLanguage: \(randomLanguage)") }
輸出
randomLanguage: Python
結論
在Swift 4.2之前,開發人員使用`arc4random_uniform(n)`函式來獲取隨機值。此函式基於C語言風格。
而Swift 4.2及更高版本中的`random()`方法使開發人員能夠更輕鬆、更安全有效地生成隨機值。因此,我們可以編寫更安全、更可靠的程式碼。