プログラミング
記事内に商品プロモーションを含む場合があります

Pythonで乱数を発生させる方法【random, numpy, pytorchの差異に注意】

Aru

Pythonで乱数を発生させるには標準ライブラリのrandomを利用しますが、numpypytorchを使う場合は、ライブラリ側でも乱数発生の関数が用意されており、そちらを利用することが多いです。この記事では、それぞれのライブラリでの乱数発生方法について解説します。random, numpy, pytorchで微妙な違いがありますが、それについても触れています。

random

seed設定

乱数のシードは以下のように設定します

import random

x = random.seed(42)

一様乱数

0<=x<1.0の乱数を生成するにはrandomを使います

import random

# 0.0以上1.0未満の乱数を生成
x = random.random()

正規分布

平均(mu)、偏差(sigma)の乱数を生成するにはgaussを使います

import random

# 正規分布の乱数を生成
x = random.gauss(mu=0.0, sigma=1.0)

整数乱数

整数の乱数を発生させる場合は、randint(a,b)の形で範囲を指定します。生成されるのはa<=x<=bの乱数です(区間[a, b])

import random

# 整数の乱数を作成 0 <= x <= 10
x = random.randint(0, 10)

複数個の乱数を生成したい場合

randomパッケージでは、複数の乱数を生成することはできませんが、以下のように内包表現を用いることで、任意の個数の乱数を発生できます。

import random

# 複数個の乱数を生成する
x = [random.random() for _ in range(1000)]
あわせて読みたい
コードがシンプルに!Pythonの内包表記の使い方を解説
コードがシンプルに!Pythonの内包表記の使い方を解説

numpy.random

seed設定

乱数のシードは以下のように設定します

import numpy as np

np.random.seed(42)

一様乱数

0<=x<1.0の乱数を生成するにはrandを使います。引数は生成する乱数の個数で、rand(10)であれば10個、rand(3,4)であれば3×4個の乱数を生成します。

import numpy as np

# 0.0以上1.0未満の乱数を生成
x = np.random.rand(10)
x = np.random.rand(3,4)

(標準)正規分布

標準正規分布の乱数を生成する場合は、randnを使います。引数はrandと同じで生成する乱数の個数です。

import numpy as np

# 正規分布の乱数を生成
x = np.random.randn(10)

整数乱数

整数の乱数を発生させる場合は、randint(a, b, n)の形で指定します。生成されるのは、a<=x<bの範囲(半開区間[a, b))です。nは、生成する個数です。

import numpy as np

# 整数の乱数を作成 0 <= x < 10
x = np.random.randint(0, 10, 100)

pytorch

seed設定

乱数のシードは以下のように設定します

import torch

torch.manual_seed(42)

一様乱数

0<=x<1.0の乱数を生成するにはrandを使います。引数は生成する乱数の個数で、rand(10)であれば10個、rand(10,2)であれば10×2個の乱数を生成します。

import torch

# 0.0以上1.0未満の乱数を生成
x = torch.rand(10)
x = torch.rand(10, 2)

(標準)正規分布

標準正規分布の乱数を生成する場合は、randnを使います。引数はrandと同じで生成する乱数の個数です。

import torch

# 正規分布の乱数を生成
x = torch.randn(2,3,4)

整数乱数

整数の乱数を発生させる場合は、randint(a, b, n)の形で指定します。生成されるのは、a<=x<bの範囲(半開区間[a, b))です。nは、生成する個数です。nについては、カッコで括って(100,)といった形で指定します。こちらも、(10, 3)というように10×3個などが生成できます。

import torch

# 整数の乱数を作成 0 <= x < 10
x = torch.randint(0, 10, (100,))

まとめ

一様分布、正規分布、整数の乱数の発生方法についてrandom, numpy, pytorchの3種類を並べてみました。numpyとpytorchは似ていますが、少しだけ違ったりするので気を付ける必要があります。

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
ある/Aru
ある/Aru
IT&機械学習エンジニア/ファイナンシャルプランナー(CFP®)
専門分野は並列処理・画像処理・機械学習・ディープラーニング。プログラミング言語はC, C++, Go, Pythonを中心として色々利用。現在は、Kaggle, 競プロなどをしながら悠々自適に活動中
記事URLをコピーしました