例如,
echo "$(( ($(od -An -N2 -i /dev/random) )%(1000-0+1) ))"
Run Code Online (Sandbox Code Playgroud)
可以使用.但它不适用于更大的数字.
如何在bash中获得0到999999999之间的随机(/ dev/random)数字?
我用的是:
shuf -i0-999999999 -n1
Run Code Online (Sandbox Code Playgroud)
虽然没有保证shuf
使用/dev/random
.使用GNU,shuf
您可以指定--random-source=/dev/random
是否真的想要.
IIRC,FreeBSD(可能还有Mac OS X)调用这个实用程序shuffle
,它需要稍微不同的参数(shuffle -n1000000000 -p1
).
如果你真的想/dev/random
直接使用,你可以使用生成一个四字节的数字,od -An -N4 -tu4
但要记住使用时会产生偏差%1000000000
,因为2 32不能被整除1000000000
.为了纠正这种情况,在产生范围内随机数的特定情况下,0-999999999
如果大于或等于,则需要拒绝四字节随机数4000000000
.
归档时间: |
|
查看次数: |
1146 次 |
最近记录: |