Pythonでランダムな座標データを生成する方法をご紹介します。前提として、今回ご紹介する方法は「numpy」という数値計算を得意とするライブラリを使います。
使う構文
構文①:numpy.random.RandomState
rng = np.random.RandomState(seed)
この構文は擬似乱数を生成するためのRandomstateインスタンスを生成します。引数seedを与える事で、ランダム状態を保持して、毎回一貫して同じ値を取得する事ができます(≒疑似乱数ジェネレーター=random number generatorの初期化処理)。
構文②:numpy.random.RandomState.randn
x1 = rng.randn(d0,d1,…,dn)
この構文は標準正規分布(standard normal distribution)から、1つ以上のランダムデータのサンプルを返す。
サンプルプログラム
以下に2次元と3次元の例をご紹介します。
2次元の例
import numpy as np
def main():
rng = np.random.RandomState(123)
x1 = rng.randn(5,2)
print(x1)
if __name__ == "__main__":
main()
3次元の例
import numpy as np
def main():
rng = np.random.RandomState(123)
x1 = rng.randn(10,2,2)
print(x1)
if __name__ == "__main__":
main()
これらのコードは固定しているので、何回実行しても同じランダム座標の組合せになります。
補足:データの座標を全体的にシフトしたい場合
次のような形でnp.array ( [N,N])を加算する事で、各データを (N,N)だけシフトできます。
“`python
import numpy as np
def main():
rng = np.random.RandomState(123)
x1 = rng.randn(10,2) + np.array([5,5])
print(x1)
if name == “main“:
main()
“`.