我注意到在某些机器上(所有openSUSE 11.2在相同的硬件上),每个Bash shell都会为$RANDOM
输出相同的值序列:
$ bash -c 'for i in `seq 10`; do echo -n "$RANDOM "; done; echo'
17767 9158 6249 18547 23633 23807 5194 22764 7977 31949
$ bash -c 'for i in `seq 10`; do echo -n "$RANDOM "; done; echo'
17767 9158 6249 18547 23633 23807 5194 22764 7977 31949
所有这些机器的顺序都是相同的。似乎随机数发生器没有播种?为什么会发生以及如何解决?
在我的个人计算机上,每次拨打上述命令时,数字都不同。
答案 0 :(得分:5)
你可以播种它:
bash -c 'RANDOM=$$; for i in `seq 10`; do echo -n "$RANDOM "; done; echo'
bash -c 'RANDOM=`date +%s`; for i in `seq 10`; do echo -n "$RANDOM "; done; echo'