シミュレーションや機械学習の初期値設定、あるいはテストデータの作成において、乱数(ランダムな値)の生成は欠かせない操作です。Python標準の random モジュールでも乱数は生成できますが、NumPyを使用すると、大量の乱数を配列として一括で高速に生成することが可能です。
本記事では、NumPyの np.random.rand 関数を使用して、0.0以上1.0未満の乱数を生成する基本的な方法を解説します。
目次
np.random.rand関数の概要
np.random.rand() は、0.0以上 1.0未満の「一様乱数」を生成する関数です。引数に生成したい要素数を指定することで、その個数分の乱数が格納されたNumPy配列(ndarray)が返されます。
標準ライブラリとの大きな違いは、ループ処理を書かずに指定したサイズの配列を一度に作成できる点にあります。
実装サンプルコード
以下は、5つの乱数を生成し、配列全体の状態と個々の値を確認するサンプルコードです。ここでは、シミュレーション実験における5回分のランダムなパラメータを生成する場面を想定しています。
import numpy as np
def generate_simulation_parameters():
"""
NumPyを使用して乱数配列を生成し、表示する関数
"""
# 0.0以上 1.0未満の乱数を5つ生成
# 引数には生成したい要素数を指定します
simulation_values = np.random.rand(5)
print("--- 生成された乱数配列 (ndarray) ---")
print(simulation_values)
print("\n--- 個別の値をフォーマットして出力 ---")
# 配列内の各要素にアクセスして表示
for val in simulation_values:
# 小数点以下4桁まで表示
print(f"パラメータ値: {val:.4f}")
if __name__ == "__main__":
generate_simulation_parameters()
実行結果の例
乱数を使用しているため、実行するたびに異なる値が出力されます。
--- 生成された乱数配列 (ndarray) ---
[0.417022 0.72032449 0.00011437 0.30233257 0.14675589]
--- 個別の値をフォーマットして出力 ---
パラメータ値: 0.4170
パラメータ値: 0.7203
パラメータ値: 0.0001
パラメータ値: 0.3023
パラメータ値: 0.1468
コードのポイント
- 一括生成:
np.random.rand(5)と記述するだけで、要素数が5の配列が生成されます。多次元配列(行列)を生成したい場合は、np.random.rand(2, 3)のように引数を追加することで、2行3列の乱数行列を作成することも可能です。 - 型: 生成されるデータの型は
float64(浮動小数点数)となります。 - 範囲: 生成される値 $x$ の範囲は $0 \le x < 1$ です。1.0が含まれない点に注意してください。
この関数を活用することで、大量のデータを扱う際にも記述量が減り、コードの可読性と処理速度を向上させることができます。
