當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Swift RandomNumberGenerator用法及代碼示例

協議

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+

相關用法


注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 RandomNumberGenerator。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。