正規分布の乱数を生成するコマンドラインツール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
などを参照してください。