协议
Random
RandomNumberGenerator
一种提供均匀分布的随机数据的类型。
声明
protocol RandomNumberGenerator
概述
当您调用使用随机数据的方法时,例如创建新的随机值或打乱集合,您可以传递 RandomNumberGenerator
类型以用作随机源。当您不传递生成器时,将使用默认的 SystemRandomNumberGenerator
类型。
在提供使用随机性的新 API 时,请提供接受符合 RandomNumberGenerator
协议的生成器的版本以及使用默认系统生成器的版本。例如,这个 Weekday
枚举提供了返回一周中随机日期的静态方法:
enum Weekday: CaseIterable {
case sunday, monday, tuesday, wednesday, thursday, friday, saturday
static func random<G: RandomNumberGenerator>(using generator: inout G) -> Weekday {
return Weekday.allCases.randomElement(using: &generator)!
}
static func random() -> Weekday {
var g = SystemRandomNumberGenerator()
return Weekday.random(using: &g)
}
}
符合RandomNumberGenerator 协议
自定义 RandomNumberGenerator
类型可以具有与默认 SystemRandomNumberGenerator
类型不同的特征。例如,可种子生成器可用于生成可重复的随机值序列以用于测试目的。
要使自定义类型符合RandomNumberGenerator
协议,请实现所需的next()
方法。对next()
的每次调用都必须产生一个统一且独立的随机值。
符合RandomNumberGenerator
的类型应专门记录生成器的线程安全和质量。
可用版本
iOS 8.0+, iPadOS 8.0+, macOS 10.10+, Mac Catalyst 13.0+, tvOS 9.0+, watchOS 2.0+
相关用法
- Swift RandomAccessCollection subscript(_:)用法及代码示例
- Swift RandomAccessCollection indices用法及代码示例
- Swift RandomAccessCollection index(_:offsetBy:)用法及代码示例
- Swift RandomAccessCollection index(_:offsetBy:limitedBy:)用法及代码示例
- Swift RangeReplaceableCollection insert(_:at:)用法及代码示例
- Swift Range clamped(to:)用法及代码示例
- Swift RangeReplaceableCollection filter(_:)用法及代码示例
- Swift RangeReplaceableCollection removeFirst(_:)用法及代码示例
- Swift RangeReplaceableCollection用法及代码示例
- Swift RangeReplaceableCollection removeSubrange(_:)用法及代码示例
- Swift RangeReplaceableCollection replaceSubrange(_:with:)用法及代码示例
- Swift RangeReplaceableCollection removeFirst()用法及代码示例
- Swift RangeReplaceableCollection remove(at:)用法及代码示例
- Swift RangeExpression ~=(_:_:)用法及代码示例
- Swift Range overlaps(_:)用法及代码示例
- Swift RangeReplaceableCollection append(_:)用法及代码示例
- Swift RangeReplaceableCollection +=(_:_:)用法及代码示例
- Swift Range用法及代码示例
- Swift Range endIndex用法及代码示例
- Swift RangeReplaceableCollection removeAll(where:)用法及代码示例
- Swift Range ~=(_:_:)用法及代码示例
- Swift RangeReplaceableCollection +(_:_:)用法及代码示例
- Swift RangeExpression relative(to:)用法及代码示例
- Swift Range isEmpty用法及代码示例
- Swift RangeReplaceableCollection init(repeating:count:)用法及代码示例
注:本文由纯净天空筛选整理自apple.com大神的英文原创作品 RandomNumberGenerator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。