質問: import numpy as np として np.random.seed(0) とした上で ランダム関数を用いるとき、 np.random.choice(range(1, 101), 100) と np.random.choice(100) とする場合の違いは何かあるのでしょうか? np.random.choice(range(1, 101), 100) →range(1, 101) →1~100の範囲内で →(range(1, 101), 100) → 100個のランダムの数を選ぶ(重複あり) という命令、ということでしょうか? また、np.random.seed(0)なのですが np.random.seed(0)は一様乱数を発生させる命令だと見かけたのですが、()内が0の場合はどういった意味合いがあるのでしょうか? よろしくお願いします。
回答: 関数の使い方を調べる上では、まず一次情報にあたると良いです。 numpy.random.choice — NumPy v1.14 Manual > > np.random.choice(range(1, 101), 100) > > →range(1, 101) →1~100の範囲内で > > →(range(1, 101), 100) → 100個のランダムの数を選ぶ(重複あり) > > という命令、ということでしょうか? > > > 正しいです。 > > np.random.choice(100) > > とする場合の違いは何かあるのでしょうか? > > > リファレンスによると、位置引数sizeが省略されたときの挙動は次のとおりです。 > > Default is None, in which case a single value is returned. > > > ndarrayインスタンスではなく、単一の値が返されます。 違いを無理に挙げるとすれば、こんなとこでしょうか。 * 選ばれる値の範囲が違う (こちらは0以上100未満) * 選ばれる値の個数が違う * 返されるオブジェクトの型が違う 比較するなら、np.random.choice(100) と np.random.choice(100, 1) の方が面白そうです。 > > np.random.seed(0)は一様乱数を発生させる命令だと見かけた > > > 疑似乱数のシード値を決定するための関数です。 同じシード値を使えば、同じ乱数の並びを再現できます。 普通に乱数を発生させたい場合には、わざわざ設定する必要はないです。