linux - bash 函数 $RANDOM 应该具有均匀分布吗?

标签 linux bash statistics

我知道 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 或 8192 的 $MAXIMUM 一起使用以确保安全。如果您想要非常大的数字,您可以多次连接 $RANDOM % 1000,只要您注意前导零即可。

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

关于linux - bash 函数 $RANDOM 应该具有均匀分布吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15939495/

相关文章:

c - Autotools 不安装目录(仅将 ./附加到目录)

linux - 尝试运行 Docker 镜像时出现 "exec user process caused "没有这样的文件或目录“”错误

linux - 从捕获其输出的函数中退出 bash 脚本

python - 使用 pandas GroupBy 获取每个组的统计数据(例如计数、平均值等)?

c# - 我在这里找平均水平吗

linux - 使用位置文件和键的固定位置过滤唯一行

linux - Bash 脚本 - 根据模板转换时间

linux - 如何使用 bash 将多行合并为一行?

android - 如何重置android/data/data/com.xxx.xxx权限linux?

mysql - MySQL 中的反向测试版