github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/math/rand/v2/rand.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 // パッケージrandは、シミュレーションなどのタスクに適した擬似乱数生成器を実装しますが、セキュリティに敏感な作業には使用しないでください。 6 // 7 // 乱数は [Source] によって生成され、通常は [Rand] でラップされます。 8 // 両方のタイプは一度に1つのゴルーチンから使用されるべきです:複数のゴルーチン間で共有するには何らかの同期が必要です。 9 // 10 // トップレベルの関数、例えば [Float64] や [Int] は、 11 // 複数のゴルーチンによる並行使用が安全です。 12 // 13 // このパッケージの出力は、どのようにシードされていても容易に予測可能かもしれません。セキュリティに敏感な作業に適した乱数については、 14 // [crypto/rand] パッケージを参照してください。 15 package rand 16 17 // Sourceは、範囲[0, 1<<64)内の一様に分布した 18 // 擬似乱数uint64値のソースです。 19 // 20 // Sourceは、複数のゴルーチンによる並行使用には安全ではありません。 21 type Source interface { 22 Uint64() uint64 23 } 24 25 // Randは、乱数のソースです。 26 type Rand struct { 27 src Source 28 } 29 30 // Newは、他の乱数を生成するためにsrcから乱数を使用する新しいRandを返します。 31 func New(src Source) *Rand 32 33 // Int64は、非負の擬似乱数63ビット整数をint64として返します。 34 func (r *Rand) Int64() int64 35 36 // Uint32は、擬似乱数32ビット値をuint32として返します。 37 func (r *Rand) Uint32() uint32 38 39 // Uint64は、擬似乱数64ビット値をuint64として返します。 40 func (r *Rand) Uint64() uint64 41 42 // Int32は、非負の擬似乱数31ビット整数をint32として返します。 43 func (r *Rand) Int32() int32 44 45 // Intは、非負の擬似乱数intを返します。 46 func (r *Rand) Int() int 47 48 // Int64Nは、半開放区間[0,n)内の非負の擬似乱数をint64として返します。 49 // nが0以下の場合、パニックを引き起こします。 50 func (r *Rand) Int64N(n int64) int64 51 52 // Uint64Nは、半開放区間[0,n)内の非負の擬似乱数をuint64として返します。 53 // nが0の場合、パニックを引き起こします。 54 func (r *Rand) Uint64N(n uint64) uint64 55 56 // Int32Nは、半開放区間[0,n)内の非負の擬似乱数をint32として返します。 57 // nが0以下の場合、パニックを引き起こします。 58 func (r *Rand) Int32N(n int32) int32 59 60 // Uint32Nは、半開放区間[0,n)内の非負の擬似乱数をuint32として返します。 61 // nが0の場合、パニックを引き起こします。 62 func (r *Rand) Uint32N(n uint32) uint32 63 64 // IntNは、半開放区間[0,n)内の非負の擬似乱数をintとして返します。 65 // nが0以下の場合、パニックを引き起こします。 66 func (r *Rand) IntN(n int) int 67 68 // UintNは、半開放区間[0,n)内の非負の擬似乱数をuintとして返します。 69 // nが0の場合、パニックを引き起こします。 70 func (r *Rand) UintN(n uint) uint 71 72 // Float64は、半開放区間[0.0,1.0)内の擬似乱数をfloat64として返します。 73 func (r *Rand) Float64() float64 74 75 // Float32は、半開放区間[0.0,1.0)内の擬似乱数をfloat32として返します。 76 func (r *Rand) Float32() float32 77 78 // Permは、半開放区間[0,n)内の整数の擬似乱数順列をn個のintのスライスとして返します。 79 func (r *Rand) Perm(n int) []int 80 81 // Shuffleは要素の順序を擬似ランダムにします。 82 // nは要素の数です。n < 0の場合、Shuffleはパニックを引き起こします。 83 // swapは、インデックスiとjの要素を交換します。 84 func (r *Rand) Shuffle(n int, swap func(i, j int)) 85 86 // Int64は、デフォルトのSourceから非負の擬似乱数63ビット整数をint64として返します。 87 func Int64() int64 88 89 // Uint32は、デフォルトのSourceから擬似乱数32ビット値をuint32として返します。 90 func Uint32() uint32 91 92 // Uint64Nは、デフォルトのSourceから半開放区間[0,n)内の非負の擬似乱数をuint64として返します。 93 // nが0以下の場合、パニックを引き起こします。 94 func Uint64N(n uint64) uint64 95 96 // Uint32Nは、デフォルトのSourceから半開放区間[0,n)内の非負の擬似乱数をuint32として返します。 97 // nが0以下の場合、パニックを引き起こします。 98 func Uint32N(n uint32) uint32 99 100 // Uint64は、デフォルトのSourceから擬似乱数64ビット値をuint64として返します。 101 func Uint64() uint64 102 103 // Int32は、デフォルトのSourceから非負の擬似乱数31ビット整数をint32として返します。 104 func Int32() int32 105 106 // Intは、デフォルトのSourceから非負の擬似乱数intを返します。 107 func Int() int 108 109 // Int64Nは、デフォルトのSourceから半開放区間[0,n)内の非負の擬似乱数をint64として返します。 110 // nが0以下の場合、パニックを引き起こします。 111 func Int64N(n int64) int64 112 113 // Int32Nは、デフォルトのSourceから半開放区間[0,n)内の非負の擬似乱数をint32として返します。 114 // nが0以下の場合、パニックを引き起こします。 115 func Int32N(n int32) int32 116 117 // IntNは、デフォルトのSourceから半開放区間[0,n)内の非負の擬似乱数をintとして返します。 118 // nが0以下の場合、パニックを引き起こします。 119 func IntN(n int) int 120 121 // UintNは、デフォルトのSourceから半開放区間[0,n)内の非負の擬似乱数をuintとして返します。 122 // nが0以下の場合、パニックを引き起こします。 123 func UintN(n uint) uint 124 125 // Nは、デフォルトのSourceから半開放区間[0,n)内の擬似乱数を返します。 126 // 型パラメータIntは任意の整数型にすることができます。 127 // nが0以下の場合、パニックを引き起こします。 128 func N[Int intType](n Int) Int 129 130 // Float64は、デフォルトのSourceから半開放区間[0.0,1.0)内の擬似乱数をfloat64として返します。 131 func Float64() float64 132 133 // Float32は、デフォルトのSourceから半開放区間[0.0,1.0)内の擬似乱数をfloat32として返します。 134 func Float32() float32 135 136 // Permは、デフォルトのSourceから半開放区間[0,n)内の整数の擬似乱数順列をn個のintのスライスとして返します。 137 func Perm(n int) []int 138 139 // ShuffleはデフォルトのSourceを使用して要素の順序を擬似ランダムにします。 140 // nは要素の数です。n < 0の場合、Shuffleはパニックを引き起こします。 141 // swapは、インデックスiとjの要素を交換します。 142 func Shuffle(n int, swap func(i, j int)) 143 144 // NormFloat64は、デフォルトのSourceから標準正規分布(平均 = 0、標準偏差 = 1)に従う 145 // 範囲[-math.MaxFloat64, +math.MaxFloat64]の正規分布のfloat64を返します。 146 // 異なる正規分布を生成するために、呼び出し元は出力を調整できます: 147 // 148 // sample = NormFloat64() * desiredStdDev + desiredMean 149 func NormFloat64() float64 150 151 // ExpFloat64は、デフォルトのSourceからレートパラメータ(lambda)が1で平均が1/lambda(1)の指数分布に従う 152 // 範囲(0, +math.MaxFloat64]の指数分布のfloat64を返します。 153 // 異なるレートパラメータの分布を生成するために、呼び出し元は出力を調整できます: 154 // 155 // sample = ExpFloat64() / desiredRateParameter 156 func ExpFloat64() float64