🎲

np.random.rand()について

2023/06/22に公開

何度調べても覚えられないnp.random.rand()について解説します。

【np.random.rand()】
randomと名のつく通り、0~1の範囲からランダムに数を返します。
全ての数は同じ確率で選ばれます。(一様分布)

()の中の引数は、出力する個数を表します。

import numpy as np
print(np.random.rand(1))
>>[0.18431186]

出力は、numpyの配列であるshape属性で返ってきます。
出力が配列なので、2次元、3次元配列なども可能です。

2行3列の2次元配列

import numpy as np
print(np.random.rand(2,3))
[[0.68960423 0.40983935 0.71659891]
 [0.82535127 0.02482443 0.68085817]]

深さ3、2行1列の3次元配列

import numpy as np
print(np.random.rand(3,2,1,))
[[[0.03001978]
  [0.54068126]]

 [[0.63161663]
  [0.12048945]]

 [[0.32593277]
  [0.20002712]]

高次元配列では上記のように、[深さ、行、列]となっており、深さを増やしたい場合は左側に数値を追加していく必要がある点に注意しましょう!

おまけ
【np.random.randn()】について
これは先ほどの関数の最後にnが追加されており
平均0、標準偏差 σ 1の正規分布の確率分布で値を返します。
引数はrand()と同じで、出力の形状を示します。


引用:wikipedia

つまり、0に近い数が出る確率が高く、約68%で±1の範囲、27%で±1~±2の範囲、4%で±2~±3の値が出力されます。

また今回の正規分布では、理論上は極低確率で10000などの数字が出力されます。
しかし、極低確率(例:0.00....1)をコンピュータ上で保持しようとすると(0.00....1)=0となってしまうため、出力確率=0となり、平均から離れすぎている数字は実質的に出力され得ないことになります。


説明はここまでです。読んでいただきありがとうございました。

Discussion