情報通信の講義の中で出てきたアーランの損失式をプログラムとして作成したくなった時に、友人から「Erlangで作ったら?」と言われたので、Erlangで作りました。
Erlangとは
自分も今回初めてErlangに触れたのですが、ざっくり紹介してみます。
Erlangは通信会社機器メーカーのエリクソンが開発した、並行処理指向の関数型言語です。
他の言語との違いとしては、変数への代入は一度きりで、その変数の先頭は大文字でなければならないという決まりがあります。(小文字だとatomというものになるらしい)
また、for文やwhile文が存在しないため、繰り返しの処理は再帰を用いらなければなりません。
アーランの損失式とは
アーランの損失式は、下の式で表します。
B=\frac{\frac{a^s}{s!}}{\sum_{i=0}^{s}\frac{a^i}{i!}}
この式は、通信の際の呼損率B(相手が呼び出せない確率)を、単位時間あたりの保留時間である呼量aと通信回線数sから求める式です。
階乗
早速作成を始めましょう。
まず階乗を行う関数を作成しました。
Erlangは引数によって場合分けが可能なので、以下のように場合分けと再帰を用いて実装しました。
factorial(0) ->
1;
factorial(N) ->
N * factorial(N - 1).
総和
分母で使用する総和を行うプログラムも、再帰と場合分けを用いてこのように実装しました。
sigma(A,0) ->
1;
sigma(A,S) ->
T=power(A,S),
F=factorial(S),
(T / F) + sigma(A,S - 1).
結果
Erlangでアーランの損失式を作成できました。
ソースはgithubに上がっています。
まとめ
Erlangを初めて触りましたが、シンプルで使いやすかったです。
次は、Elixirなんかも触りたいと思ってます。
参考ページ
Erlang - Wikipedia (https://ja.wikipedia.org/wiki/Erlang)