5

一部のマシン(同じハードウェア上のすべてのopenSUSE 11.2)では、すべてのBashシェルが次の値の同じシーケンスを出力することに気付きました$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

シーケンスは、これらすべてのマシンで同じです。乱数ジェネレーターがシードされていないようですか?なぜそれが起こるのですか、そしてそれを修正する方法は?

私の個人用マシンでは、上記のコマンドを呼び出すたびに番号が異なります。

4

1 に答える 1

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'
于 2011-03-13T16:55:39.943 に答える