如何在bash中获得0到999999999之间的随机(/ dev/random)数字?

adr*_*nos 3 random bash

例如,

echo "$(( ($(od -An -N2 -i /dev/random) )%(1000-0+1) ))"
Run Code Online (Sandbox Code Playgroud)

可以使用.但它不适用于更大的数字.

如何在bash中获得0到999999999之间的随机(/ dev/random)数字?

ric*_*ici 6

我用的是:

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.