【发布时间】:2017-02-02 14:31:20
【问题描述】:
我正在编写一个使用$RANDOM 环境变量作为模拟输入的bash 脚本。该变量执行它所说的,给出随机整数,据我所知,它取自/dev/random。
但是我想要一个可重现的模拟,那么应该用种子初始化伪随机生成器;是否可以在 bash 中为 $RANDOM 变量提供种子?
【问题讨论】:
-
来自
man bash:随机数序列可以通过给RANDOM赋值来初始化。
我正在编写一个使用$RANDOM 环境变量作为模拟输入的bash 脚本。该变量执行它所说的,给出随机整数,据我所知,它取自/dev/random。
但是我想要一个可重现的模拟,那么应该用种子初始化伪随机生成器;是否可以在 bash 中为 $RANDOM 变量提供种子?
【问题讨论】:
man bash:随机数序列可以通过给RANDOM赋值来初始化。
来自手册页:
RANDOM Each time this parameter is referenced, a random integer between
0 and 32767 is generated. The sequence of random numbers may be
initialized by assigning a value to RANDOM. If RANDOM is unset,
it loses its special properties, even if it is subsequently
reset.
请注意,为RANDOM 赋值实际上是种子;分配的值不会是下一个返回的值。
$ RANDOM=1341
$ echo $RANDOM $RANDOM $RANDOM
26571 16669 28842
$ echo $RANDOM $RANDOM $RANDOM
14953 18116 2765
$ RANDOM=1341
$ echo $RANDOM $RANDOM $RANDOM
26571 16669 28842
$ echo $RANDOM $RANDOM $RANDOM
14953 18116 2765
【讨论】: