2019年4月20日土曜日

[Python vs Julia] 整数の乱数を発生させる

過去にPythonを用いて整数の乱数を発生させるコード例を投稿しました.

その中では,20回サイコロを振ることを想定して,整数の乱数を発生させるために,Pythonで以下のように書きました.
>>> import numpy as np
>>> np.random.choice(np.arange(1, 7), 20)
array([4, 2, 5, 1, 6, 5, 5, 3, 1, 5, 4, 4, 3, 4, 1, 5, 2, 1, 2, 2])

これをJuliaで行う場合には,以下のように書けば良いようです.
julia> rand(1:6, 20) # rand(start:stop, times)
20-element Array{Int64,1}:
 4
 3
 5
 5
 2
 3
 2
 2
 5
 3
 3
 1
 4
 4
 6
 5
 4
 4
 2
 5
上記のREPLの例にもコメントしてありますが,関数rand()の使い方は以下のようになります.
rand(start:stop, times)

上記の例は復元抽出なので,非復元抽出を行う場合はPythonで以下のように書きました.
>>> np.random.choice(np.arange(1, 7), 6, replace = False)
array([5, 3, 4, 6, 1, 2])

これをJuliaで行う場合には,StatsBaseパッケージを用いて,以下のように書けば良いようです.
julia> using StatsBase

julia> sample(1:6, 6, replace=false)
6-element Array{Int64,1}:
 6
 4
 1
 3
 2
 5
関数sample()の使い方は以下のようになります.
sample(start:stop, times, replace = "true" or "false")

なので,最初のコードと同じことを実行するためには,以下のように書いても良いようです.
julia> sample(1:6, 20, replace=true)
20-element Array{Int64,1}:
 4
 1
 6
 4
 1
 5
 5
 6
 4
 2
 6
 3
 2
 1
 1
 6
 2
 1
 5
 1

なお,上記の例のJupyter Notebookファイルは,GitHubPython_vs_Julia_Julia_03というファイルで見ることができます.

0 件のコメント :

コメントを投稿