微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – bash函数$RANDOM应该是统一分布吗?

我知道bash函数$RANDOM会在一个范围内生成随机整数,但是,这些数字应该遵循(或近似)一个统一的离散分布吗?

解决方法:

我只打印了$RANDOM一百万次,把它变成直方图,并用gnumeric查看它,图表显示了非常正态的分布!

for n in `seq 1 1000000`; do echo $RANDOM ; done > random.txt
gawk '{b=int($1/100);a[b]++};END{for (n in a) {print n","a[n]}}' random.txt > hist.csv
gnumeric hist.csv

因此,如果您想要近似线性分布,请使用$(($RANDOM%$MAXIMUM))并且不要使用大于16383的$MAXIMUM或8192安全.如果你想要非常大的数字,你可以多次连接$RANDOM%1000,只要你处理前导零.

如果你想要正态分布,请使用$(($RANGE * $RANDOM / 32767 $MINIMUM)),并记住这只是整数数学.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐