Python - Bash - 随机数
假设有一个脚本叫做'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]# ./random.sh
10996
如果把RANDOM这个变量改名为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
我想问的是——这是为什么呢? :)
3 个回答
1
$RANDOM 是 bash 中一个预定义的变量。
打开一个新的终端,试试看:
> echo $RANDOM
6007
> echo $RANDOM
122211
2
$RANDOM
是一个内部的 bash
函数,它会返回一个范围在 0 到 32767 之间的伪随机整数。
所以在第一个例子中,你看到的随机数字是由 bash
生成的,而不是你的 Python 脚本生成的。当你给 RANDOM
赋值时,其实是在给 bash
的随机数生成器提供一个初始值。
6
RANDOM是一个预定义的bash变量。根据手册的说明:
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这个变量名,可以这样做:
unset RANDOM
RANDOM=`..your script..`