...

パッケージ rand

import "crypto/rand"
概要
目次

概要 ▾

rand パッケージは,暗号論的に安全な乱数生成器を実装します。

変数

Reader は,暗号学的に安全な乱数ジェネレータのグローバルな共有インスタンスです。

Linux と FreeBSD では, Reader は利用可能ならば getrandom(2) を,そうでなければ /dev/urandom を使います。 OpenBSD では, Reader は getentropy(2) を使用します。 他の Unix 系システムでは, Reader は /dev/urandom から読み込みます。 Windows システムでは, Reader は CryptGenRandom API を使用します。 Wasm では, Reader は Web Crypto API を使用します。

var Reader io.Reader

func Int

func Int(rand io.Reader, max *big.Int) (n *big.Int, err error)

Int は, [0, max) で一様なランダムな値を返します。 max <= 0 の場合はパニックします。

func Prime

func Prime(rand io.Reader, bits int) (p *big.Int, err error)

Prime は与えられたサイズの数 p を返し, p は高い確率で素数になります。 Prime は, rand.Read によって返されたエラー,または bits < 2 の場合,エラーを返します。

func Read

func Read(b []byte) (n int, err error)

Read は, io.ReadFull を使用して Reader.Read を呼び出すヘルパー関数です。 err == nil の場合は,またその場合に限り, n == len(b) となります。

この例では, rand.Reader から暗号学的に安全な 10 個の疑似乱数を読み取り,それらをバイトスライスに書き込みます。

コード:

c := 10
b := make([]byte, c)
_, err := rand.Read(b)
if err != nil {
    fmt.Println("error:", err)
    return
}
// スライスには,ゼロだけでなくランダムなバイトが含まれているはずです。
fmt.Println(bytes.Equal(b, make([]byte, c)))

出力:

false