当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。