NumPyの乱数
乱数とは何ですか?
乱数は、毎回異なる数を意味するわけではありません。ランダムとは、論理的に予測できないものを意味します。
疑似ランダムと真のランダム。
コンピューターはプログラムで動作し、プログラムは決定的な命令セットです。つまり、乱数を生成するためのアルゴリズムも必要です。
乱数を生成するプログラムがあれば、それを予測できるので、真にランダムではありません。
生成アルゴリズムによって生成された乱数は、疑似乱数と呼ばれます。
本当に乱数を作ることができますか?
はい。コンピューターで真の乱数を生成するには、外部ソースからランダムデータを取得する必要があります。この外部ソースは、通常、キーストローク、マウスの動き、ネットワーク上のデータなどです。
セキュリティに関連する場合(暗号化キーなど)またはアプリケーションの基礎がランダム性(デジタルルーレットホイールなど)でない限り、真の乱数は必要ありません。
このチュートリアルでは、疑似乱数を使用します。
乱数を生成する
NumPyは、random
乱数を処理するモジュールを提供します。
例
0〜100のランダムな整数を生成します。
from numpy import random
x = random.randint(100)
print(x)
ランダムフロートを生成する
ランダムモジュールのrand()
メソッドは、0と1の間のランダムな浮動小数点数を返します。
例
0から1までのランダムな浮動小数点数を生成します。
from numpy import random
x = random.rand()
print(x)
ランダム配列を生成する
NumPyでは配列を操作し、上記の例の2つの方法を使用してランダムな配列を作成できます。
整数
このrandint()
メソッドはsize
、配列の形状を指定できるパラメーターを取ります。
例
0〜100の5つのランダムな整数を含む1次元配列を生成します。
from numpy import random
x=random.randint(100, size=(5))
print(x)
例
3行の2次元配列を生成します。各行には、0〜100の5つのランダムな整数が含まれます。
from numpy import random
x = random.randint(100, size=(3, 5))
print(x)
フロート
このrand()
メソッドでは、配列の形状を指定することもできます。
例
5つのランダムなフロートを含む1次元配列を生成します。
from numpy import random
x = random.rand(5)
print(x)
例
3行の2次元配列を生成します。各行には、5つの乱数が含まれています。
from numpy import random
x = random.rand(3, 5)
print(x)
配列から乱数を生成する
このchoice()
メソッドを使用すると、値の配列に基づいてランダムな値を生成できます。
このchoice()
メソッドは、配列をパラメーターとして受け取り、値の1つをランダムに返します。
例
配列内の値の1つを返します。
from numpy import random
x = random.choice([3, 5, 7, 9])
print(x)
このメソッドでは、値の配列choice()
を返すこともできます。
size
配列の形状を指定するパラメーターを追加します。
例
配列パラメーター(3、5、7、および9)の値で構成される2次元配列を生成します。
from numpy import random
x = random.choice([3, 5, 7, 9], size=(3, 5))
print(x)