2021-03-11

正規分布の乱数を生成するコマンドラインツール

正規分布の乱数を生成するコマンドラインツール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/binPATH環境変数に加えること。

使い方

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 --helpfrand normal --helpなどを参照してください。

お問い合わせはこちらまで: @matil019 リプにブログのリンクを含めていただけるとスムーズに会話できます。
記事一覧