今回は,それをJuliaで行ってみます.計算例はREPLで行なったものです.
順列
1, 2, 3の3つの数字の並べ方は $3! = 3 \times 2 \times 1 = 6$ 通りです.
階乗を求めるには factorial() 関数を使用します.
julia> factorial(3)
6
順列
${}_n P _r = \cfrac{n!}{(n - r)!}$
を表示するには,以下のように permutations() 関数を使用します.
何通りあるかだけを知りたい場合には,以下のようにして求めます.
julia> binomial(5, 3) * factorial(3)
60
julia> using Combinatorics
julia> seq = (1, 2, 3)
(1, 2, 3)
julia> collect(permutations(seq))
6-element Array{Array{Int64,1},1}:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
(1, 2, 3)
julia> collect(permutations(seq))
6-element Array{Array{Int64,1},1}:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
順列,組合せを扱うには,Combinatorics パッケージ*を使用します.
なお,collect は,配列を展開して表示するためのコマンドです.
上記のように特に配列(seq)を定義しなくても実行可能です.
julia> collect(permutations([1, 2, 3]))
6-element Array{Array{Int64,1},1}:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
6-element Array{Array{Int64,1},1}:
[1, 2, 3]
[1, 3, 2]
[2, 1, 3]
[2, 3, 1]
[3, 1, 2]
[3, 2, 1]
julia> collect(permutations([1, 2, 3, 4, 5], 3))
60-element Array{Array{Int64,1},1}:
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 2]
[1, 3, 4]
[1, 3, 5]
[1, 4, 2]
[1, 4, 3]
[1, 4, 5]
[1, 5, 2]
[1, 5, 3]
[1, 5, 4]
[2, 1, 3]
[2, 1, 4]
[2, 1, 5]
[2, 3, 1]
[2, 3, 4]
[2, 3, 5]
[2, 4, 1]
[2, 4, 3]
[2, 4, 5]
⋮
[4, 2, 1]
[4, 2, 3]
[4, 2, 5]
[4, 3, 1]
[4, 3, 2]
[4, 3, 5]
[4, 5, 1]
[4, 5, 2]
[4, 5, 3]
[5, 1, 2]
[5, 1, 3]
[5, 1, 4]
[5, 2, 1]
[5, 2, 3]
[5, 2, 4]
[5, 3, 1]
[5, 3, 2]
[5, 3, 4]
[5, 4, 1]
[5, 4, 2]
[5, 4, 3]
組合せ
1, 2, 3, 4, 5 から3つを選ぶ組合せは,${}_5 C _3= \frac{{}_5 P_3}{3!} = 10$ 通りとなります.
何通りあるかを知りたい場合には以下のようにします.
julia> binomial(5, 3)
10
組合せ
${}_n C _r= \cfrac{{}_n P_r}{r!} = \cfrac{n!}{r! (n - r)!}$
を表示するには,以下のように combinations() 関数を用いて,第一引数に対象とする配列,第二引数に選ぶ数を指定します.
julia> seq2 = (1, 2, 3, 4, 5)
(1, 2, 3, 4, 5)
julia> collect(combinations(seq2, 3))
10-element Array{Array{Int64,1},1}:
[1, 2, 3]
[1, 2, 4]
[1, 2, 5]
[1, 3, 4]
[1, 3, 5]
[1, 4, 5]
[2, 3, 4]
[2, 3, 5]
[2, 4, 5]
[3, 4, 5]
順列の例と同様に,配列を事前に定義せずに,第一引数に記載しても同様な結果が得られます.
なお,上記の例のJupyter Notebookファイルは,GitHubのDiscreteProbabilityCombinationというファイルで見ることができます.
* Combinatorics パッケージを追加する際には,パッケージモードで " add Combinatorics "と入力します.すると以下のようにインストールが行われます.
(v1.1) pkg> add Combinatorics
Resolving package versions...
Installed Combinatorics ─ v0.7.0
Installed Polynomials ─── v0.5.2
Updating `~/.julia/environments/v1.1/Project.toml`
[861a8166] + Combinatorics v0.7.0
Updating `~/.julia/environments/v1.1/Manifest.toml`
[861a8166] + Combinatorics v0.7.0
[f27b6e38] + Polynomials v0.5.2
0 件のコメント :
コメントを投稿