協議
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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。