シェルで指数分布の乱数
性能測定等で指数分布の乱数を発生させたい場合。
発生確率(?)=1とすると、逆数を2回計算するのは不要なんでしょうか。
- シェルで対数 - cartoohの日記
http://d.hatena.ne.jp/cartooh/20060112 - 指数分布の乱数を作る−−指数乱数−−
http://www.ishikawa-lab.com/montecarlo/4shou.html#4.2
#!/bin/bash for i in `seq 1 $1`; do interval=$(echo "interval = -( 1 / (1 / $2) ) * l($RANDOM / 32767); scale=0; interval / 1" | bc -l) #echo $interval #usleep $interval done
- $1 は乱数発生の回数
- $2 は平均。usleepのマイクロ秒とすると例えば1000000を指定すると、平均1000000us=1sの指数分布の乱数になる(はず)。
- bashの$RANOMが0-32767なので多少荒いかもしれない。