正規分布の乱数を生成するコマンドラインツールfrandをHaskellで書いて日常生活で使っていたところ、割と便利だったのでGitHubに公開した。
売りは小数を生成できることと、正規分布に従った乱数を生成できること。私は毎日のスクワットの回数やタバコの本数を決めたりするのに使っている(定数だと飽きるため)。
Haskellのビルドツールであるcabal-installツールを使う。ただこれを単体で入れるよりは、Linuxならばghcup、WindowsならばChocolatey ghcまたはHaskell Platformを使って入れるのがオススメ。
cabal-installを入れたら次はfrandの入手。あいにくHackageにうpしていないので手動で入手していただきたい。GitHubのリリースページの最新バージョンのzipまたはtar.gzリンクをクリックすることで入手できる。
入手したfrandのアーカイブを展開したら、cabal-installのお決まりのコマンドでコンパイル・インストールする。
cabal v2-update
cabal v2-install . --overwrite-policy=always初回実行時であればパッケージ情報の更新(v2-update)および依存のDL・コンパイル(v2-install)にかなり時間がかかるかもしれない。なお、--overwrite-policy=alwaysは付けなくてもいいけど付けておくと新しいバージョンを上書きインストールするときに便利。プログラムは~/.cabal/bin/frandにインストールされる。まだであれば$HOME/.cabal/binをPATH環境変数に加えること。
frandは一様分布と正規分布をサポートしている。
区間[1, 5]内の乱数を生成する:
$ frand uniform 1 5
4.551609505727284平均が5、標準偏差が2の正規分布に従って乱数を5個生成する:
$ frand normal --num 5 5 2
5.235272117068453
4.64985889420898
7.060698043923342
4.834412934580578
6.105681218321858シードを指定することで再現可能な乱数を生成する:
$ echo foo > seedfile
$ frand normal --seed-in seedfile 5 2
6.585815226312909
$ frand normal --seed-in seedfile 5 2
6.585815226312909などなど。他にもオプションがあるのでfrand --helpやfrand normal --helpなどを参照してください。