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