如何在苹果的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