我在 Unix shell 中试验 $RANDOM 变量并注意到一些奇怪的东西。我运行了以下命令,它在循环中读取 $RANDOM 100k 次,然后将输出通过管道传输到“uniq”以查找重复项。
$ for i in {1..100000}; do echo $RANDOM; done | uniq -d
我将上面的命令运行了 7 次,同样的两个数字(4455 和 4117)全部重复了 7 次。下面的屏幕截图显示了命令行输出。
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
kali@kali:~% for i in {1..100000}; do echo $RANDOM; done | uniq -d
4455
4117
见:https ://i.stack.imgur.com/5bpEe.png
我还打开了另一个终端窗口并重复了该过程。在第二个航站楼,数字不同,但以类似的方式重复。这让我想知道 $RANDOM 变量的熵是什么时候产生的,以及它是如何播种的。
我的猜测是,每当调用它时都会重新播种bash
,但我想知道是否有人知道为什么当我在单个终端窗口中重复命令时重复相同的值。