システムは次のとおりです。
pi@titania:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
NAME="Raspbian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@titania:~ $ uname -a
Linux titania.####.net 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU/Linux
乱数を生成するとき、RANDOMとURANDOMの間に異なる動作が観察されました。気をつけて:
pi@titania:~ $ echo $URANDOM | md5sum | head -c 20; echo;
68b329da9893e34099c7
pi@titania:~ $ echo $URANDOM | md5sum | head -c 20; echo;
68b329da9893e34099c7
pi@titania:~ $ echo $URANDOM | md5sum | head -c 20; echo;
68b329da9893e34099c7
pi@titania:~ $ echo $RANDOM | md5sum | head -c 20; echo;
a5355860c5367e0dc179
pi@titania:~ $ echo $RANDOM | md5sum | head -c 20; echo;
521938e64c42075b2b92
pi@titania:~ $ echo $RANDOM | md5sum | head -c 20; echo;
03505fd360ab7ae8378d
URANDOMは決定論的な方法で同じ出力を生成しますが、RANDOMはそうではなく、毎回予想とは異なる結果を返します。
私はURANDOMをできるだけ使いたかったので、これは私の関心を引き起こしました。
なぜこのような違いが発生するのかを知っている人はいますか?
ジョン・スプリングガー
ベストアンサー1
変数$URANDOM
が空です。
$ echo '' | md5sum | head -c 20; echo;
68b329da9893e34099c7
RANDOM
私はあなたがbash変数について混乱していると思います(from man bash
:
RANDOM Each time this parameter is referenced, it expands to a random
integer between 0 and 32767. Assigning a value to RANDOM ini‐
tializes (seeds) the sequence of random numbers. If RANDOM is
unset, it loses its special properties, even if it is subse‐
quently reset.
bash
さまざまな他のシェルが組み込みRANDOM
変数を提供しますが、同じ名前の変数を持つシェルはわかりませんURANDOM
。どのシェルを使用しているかはわかりませんでしたが、表示された出力によるとシェルはそれも提供しないので、あなたがしていることは空の文字列をエコーするだけです。
私はあなたが実際に全く違うこと/dev/random
を考えていると思います。/dev/urandom
以下の一部をお読みください。