Python-Bash-random数字
给定包含以下内容的脚本“random.sh”:Python-Bash-random数字,python,bash,random,Python,Bash,Random,给定包含以下内容的脚本“random.sh”: #!/bin/bash RANDOM=`python -v -d -S -c "import random; print random.randrange(500, 800)"` echo $RANDOM 运行此命令将生成给定范围之外的随机数: [root@localhost nms]# ./random.sh 23031 [root@localhost nms]# ./random.sh 9276 [root@localhost nms]#
#!/bin/bash
RANDOM=`python -v -d -S -c "import random; print random.randrange(500, 800)"`
echo $RANDOM
运行此命令将生成给定范围之外的随机数:
[root@localhost nms]# ./random.sh
23031
[root@localhost nms]# ./random.sh
9276
[root@localhost nms]# ./random.sh
10996
将随机变量重命名为RAND,将给出给定范围内的随机数,即
#!/bin/bash
RAND=`python -v -d -S -c "import random; print random.randrange(500, 800)"`
echo $RAND
给出:
[root@localhost nms]# ./random.sh
671
[root@localhost nms]# ./random.sh
683
[root@localhost nms]# ./random.sh
537
我的问题是——为什么?:) RANDOM是一个预定义的bash变量。从手册页:
RANDOM每次引用此参数时,在
生成0和32767。随机数的序列可以是
通过将值赋给RANDOM来初始化。如果未设置RANDOM,
它失去了它的特殊属性,即使它随后
重置。
因此,如果确实要使用随机变量名,请执行以下操作:
unset RANDOM
RANDOM=`..您的脚本`
是一个内部bash
函数,它返回一个0-32767范围内的伪随机整数
因此,在第一个示例中,您看到的是由
bash
生成的随机数,而不是由Python脚本生成的随机数。当您分配给RANDOM
时,您只是在播种bash
的随机数生成器。$RANDOM是bash中预定义的变量
打开一个新终端并尝试:
> echo $RANDOM
6007
> echo $RANDOM
122211
注意:我添加了-v-d标志以进一步调试它,没有任何运气。没有它们的结果是一样的。。。当然我太专注于调试python端,以至于忘记了bash端。谢谢你,约翰。