PythonのNumPyで乱数を生成する方法を徹底解説
NumPyパッケージには、乱数の生成に役立つさまざまな関数が含まれた random モジュール が用意されています。この記事では、特に利用頻度の高い rand()、randn()、randint()、random() の4つの関数について、実際のコード例とともにわかりやすく解説します。
numpy.random.rand():一様分布の乱数配列を作成する
numpy.random.rand() は、指定した形状(シェイプ)の配列を作成し、その要素を「0以上1未満」の一様分布から抽出されたランダムなサンプルで満たします。引数に配列の次元サイズを渡します。
>>> import numpy as np
>>> np.random.rand(3,2)
array([[0.10339983, 0.54395499],
[0.31719352, 0.51220189],
[0.98935914, 0.8240609 ]])
上記の例では、3行2列の配列にランダムな値が格納されています。
numpy.random.randn():標準正規分布に従う乱数を取得する
numpy.random.randn() は、「標準正規分布」(平均0・標準偏差1)からサンプルを返します。引数なしで呼び出した場合は、単一の乱数値が得られます。
>>> np.random.randn() -0.6808986872330651
引数にサイズを指定すれば、正規分布に従う多次元配列を一度に生成することも可能です。
numpy.random.randint():範囲内のランダムな整数を生成する
numpy.random.randint() は、low(以上)から high(未満)までの範囲からランダムな整数を返します。size 引数で配列の形状を指定できます。なお、high を省略した場合は 0 以上 low 未満の整数が返されます。
>>> np.random.randint(5, size=(2, 4))
array([[2, 4, 0, 4],
[3, 4, 1, 2]])
上記の例では、0以上5未満の整数からなる2行4列の配列が生成されています。
numpy.random.random():0.0〜1.0の浮動小数点数を生成する
numpy.random.random() は、半開区間 [0.0, 1.0) からランダムな浮動小数点数を返します。random_sample() と同様の動作をする関数です。
>>> np.random.random_sample() 0.054638060174776126
補足:乱数の再現性が必要な場合はseed()を使う
実験やデバッグで毎回同じ乱数列を再現したいときは、np.random.seed() でシード値を固定しておくと便利です。
>>> np.random.seed(42) >>> np.random.rand(2) array([0.37454012, 0.95071431])
同じシード値を設定すれば、何度実行しても同じ結果が得られます。
まとめ
NumPyのrandomモジュールを使えば、用途に応じてさまざまな種類の乱数を簡単に生成できます。
- rand() … 一様分布(0以上1未満)の乱数配列
- randn() … 標準正規分布に従う乱数
- randint() … 指定範囲内のランダムな整数
- random() … 0.0〜1.0の浮動小数点数
これらの関数を使い分けることで、シミュレーションやデータ分析、機械学習の初期化処理など、幅広い場面で効率的に乱数を扱えるようになります。
-
MySQLのストアドプロシージャで5つの乱数を生成する方法
MySQLでランダムな数値を抽出するには、ORDER BY RAND() を活用するのが便利です。本記事では、テーブルに登録されたデータの中からランダムに5つの値を選び出し、それをストアドプロシージャとして作成・呼び出すまでの手順を、実際のコード例とともにわかりやすく解説します。 1. サンプルテーブルを作成する まず、乱数の候補となる値を格納するためのテーブルを作成します。 mysql> create table DemoTable (Value int); Query OK, 0 rows affected (0.76 sec) 2. テーブルにデータを挿入する 続いて、INSERT
-
PythonのTkinterでスレッドを使う方法|threadingモジュールによる非同期処理の基本
Tkinterでは、スレッド(Threading)を活用することで、複数の関数を同時に実行できます。これにより、アプリケーション内の処理を非同期で動かすことが可能になります。 Pythonでスレッドを使用するには、まずthreadingモジュールをインポートし、そのThreadクラスを継承した新しいクラスを定義します。そして、クラス内でrunメソッドをオーバーライドし、実行したい処理をその中に記述します。 つまり、スレッドを使えば複数の作業を並行して進めることができます。Tkinterアプリケーションでスレッドを実現する際は、Thread()関数を利用します。 ここでは、「一定時間スリープした