Protocol

RandomNumberGenerator

A type that provides uniformly distributed random data. 一様分布無作為データを提供する型。

Declaration 宣言

protocol RandomNumberGenerator

Overview 概要

When you call methods that use random data, such as creating new random values or shuffling a collection, you can pass a RandomNumberGenerator type to be used as the source for randomness. When you don’t pass a generator, the default SystemRandomNumberGenerator type is used. あなたが無作為データを使うメソッドを呼び出す場合、例えば新しい無作為値を作成するまたはコレクションをシャッフルするなど、あなたはRandomNumberGenerator型を渡して、無作為さの出典として使われるようにできます。あなたが生成子を渡さない場合、省略時のSystemRandomNumberGenerator型が使用されます。

When providing new APIs that use randomness, provide a version that accepts a generator conforming to the RandomNumberGenerator protocol as well as a version that uses the default system generator. For example, this Weekday enumeration provides static methods that return a random day of the week: 無作為さを使う新しい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)
    }
}

Conforming to the RandomNumberGenerator Protocol RandomNumberGeneratorプロトコルに準拠する

A custom RandomNumberGenerator type can have different characteristics than the default SystemRandomNumberGenerator type. For example, a seedable generator can be used to generate a repeatable sequence of random values for testing purposes. あつらえのRandomNumberGenerator型は、省略時のSystemRandomNumberGenerator型とは異なる特徴を持つことができます。例えば、シード可能生成子は、繰り返し可能な一連の無作為値を、テスト目的で生成するために使用できます。

To make a custom type conform to the RandomNumberGenerator protocol, implement the required next() method. Each call to next() must produce a uniform and independent random value. あなたのあつらえのクラスをRandomNumberGeneratorプロトコルに準拠させるには、必須next()メソッドを実装してください。next()への各呼び出しは、一様で独立した無作為値を生成しなければなりません。

Types that conform to RandomNumberGenerator should specifically document the thread safety and quality of the generator. RandomNumberGeneratorに準拠する型は、とりわけ生成子のスレッド安全と品質を文書化すべきです。

Topics 話題

Generating Random Binary Data 無作為なバイナリデータを生成する

Relationships 関係

Conforming Types これらの型が準拠

See Also 参照

Random Number Generators 無作為数生成子