我意识到Swift书籍提供了一个随机数生成器的实现。复制和粘贴这个实现是最佳实践吗?或者有没有这样的库,我们现在就可以使用?


当前回答

例如10(0-9)之间的随机数;

import UIKit

let randomNumber = Int(arc4random_uniform(10))

非常简单的代码-简单和简短。

其他回答

我使用了下面的代码:

var k: Int = random() % 10;

斯威夫特4.2

拜拜导入Foundation C库arc4random_uniform()

// 1  
let digit = Int.random(in: 0..<10)

// 2
if let anotherDigit = (0..<10).randomElement() {
  print(anotherDigit)
} else {
  print("Empty range.")
}

// 3
let double = Double.random(in: 0..<1)
let float = Float.random(in: 0..<1)
let cgFloat = CGFloat.random(in: 0..<1)
let bool = Bool.random()

使用random(in:)从范围中生成随机数字。 randomElement()返回nil如果范围是空的,所以你打开返回的Int?用if let。 使用random(in:)生成随机Double、Float或CGFloat,使用random()返回随机Bool类型。

更多@官方

从iOS 9开始,你可以使用新的GameplayKit类以各种方式生成随机数。

你有四种源类型可以选择:一般随机源(未命名,直到系统选择它做什么),线性同余,ARC4和梅森扭扭。它们可以生成随机int型、浮点型和bool型。

在最简单的层面上,你可以从系统内置的随机源生成一个随机数,如下所示:

GKRandomSource.sharedRandom().nextInt()

这就产生了一个介于- 2147,483,648到2147,483,647之间的数字。如果你想要一个介于0和上界(不包含)之间的数字,你可以使用这个:

GKRandomSource.sharedRandom().nextIntWithUpperBound(6)

GameplayKit内置了一些方便的构造函数来处理骰子。例如,你可以像这样掷一个六面骰子:

let d6 = GKRandomDistribution.d6()
d6.nextInt()

此外,你还可以使用GKShuffledDistribution之类的东西来塑造随机分布。这需要更多解释,但如果你感兴趣,你可以阅读我关于GameplayKit随机数的教程。

例如10(0-9)之间的随机数;

import UIKit

let randomNumber = Int(arc4random_uniform(10))

非常简单的代码-简单和简短。

你可以像在C中那样做:

let randomNumber = arc4random()

推断randomNumber类型为UInt32(32位无符号整数)