如何在苹果的Swift语言中生成一个随机数

如何在苹果的Swift语言中生成一个随机数

本文将向你解释如何用Swift语言生成随机数。

当你需要在你的iOS应用程序中生成随机值时,有一些常见的情况,比如说

  • 模拟骰子的滚动。

  • 洗牌。

  • 为一个用户创建一个唯一的ID。

  • 来自集合类型的随机值。

在Swift 4.2中,有新的、简单而安全的方法来生成随机值。在这之前,有一个用C语言编写的随机函数。今天,你将学习随机()函数,它接收一个数值范围,作为输出,它每次都会返回一个随机挑选的数值。

如何使用Arc4random()函数

我们来看看arc4random()函数的一个例子

要在Swift中生成一个随机数,你可以使用arc4random()函数,它可以生成一个0到UInt32.max之间的随机数。比如说。

import Foundation
let randomNumber = arc4random()
print(randomNumber)

这里要注意:在任何情况下,输出都是随机的。

这将产生一个介于0和UInt32.max之间的随机数,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步 – 在这里,它将从给定的范围内返回一个随机数Int,即-10到低于10。

第3步 – 在这里,它将返回一个在给定范围内的随机浮动值,即0到5。

第4步 – 在这里,它将返回一个随机的Bool值,可以是真也可以是假。

从集合中生成随机值

使用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及更高版本中的随机()方法让开发者更容易安全有效地生成随机值。因此,我们可以编写更安全、更可靠的代码。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Swift 教程