Rpi BusterでRANDOMとURANDOMのさまざまな動作

Rpi BusterでRANDOMとURANDOMのさまざまな動作

システムは次のとおりです。

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以下の一部をお読みください。

おすすめ記事