如何在蘋果的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()`方法使開發人員能夠更輕鬆、更安全有效地生成隨機值。因此,我們可以編寫更安全、更可靠的程式碼。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP