【问题标题】:Why is Bash’s $RANDOM not seeded (?) on some machines?为什么 Bash 的 $RANDOM 没有在某些机器上播种(?)?
【发布时间】:2011-07-14 12:47:57
【问题描述】:

我注意到在某些机器上(所有 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

所有这些机器的顺序都是相同的。似乎随机数生成器没有播种?为什么会发生以及如何解决?

在我的个人机器上,每次我调用上述命令时,数字都是不同的。

【问题讨论】:

  • 在 Bash 中无需使用 seqfor i in {1..10}for ((i=1;i<=10;i++))

标签: bash random seed


【解决方案1】:

你可以直接播种:

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'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-11
    • 2018-11-22
    • 2021-09-28
    • 1970-01-01
    • 2011-01-13
    • 1970-01-01
    相关资源
    最近更新 更多