用shell生成随机数,通过linux时间命令date获得随机数,可以精确到亿分之一秒,且可以生成一定范围的随机数,并分享了通过内部系统变量($RANDOM)生成随机数的方法。
shell随机数生成代码
shell随机数生成思路,参考:
一、通过时间linuxjishu/14052.html target=_blank class=infotextkey>date命令获得随机数(date)
例子:
复制代码 代码示例:
[root@jbxue shell]$ date +%s
1287764773
#获得时间戳,当前到:1970-01-01 00:00:00 相隔的秒数
[root@jbxue shell]$ date +%N
738710457
#获得当前时间的纳秒数据,精确到亿分之一秒。
[root@jbxue shell]$ date +%s%N
1287764807051101270
例子,获取一段范围内随机数:
复制代码 代码示例:
#!/bin/sh
#写个随机函数,调用方法random min max
#在min 与 max直接获得随机整数
#获得随机数返回值,shell函数里算出随机数后,更新该值
function random()
{
min=$1;
max=$2-$1;
num=$(date +%s+%N);
((retnum=num%max+min));
#进行求余数运算即可
echo $retnum;
#这里通过echo 打印出来值,然后获得函数的,stdout就可以获得值
#还有一种返回,定义全价变量,然后函数改下内容,外面读取
}
#得到1-10的seq数据项
for i in {1..10};
do
out=$(random 2 10000);
echo $i,"2-10000",$out;
done;
运行结果:
复制代码 代码示例:
[root@jbxue shell]$ sh testrandom.sh
1,2-10000,5600
2,2-10000,5295
3,2-10000,3432
4,2-10000,3148
5,2-10000,9041
6,2-10000,4290
7,2-10000,2380
8,2-10000,9009
9,2-10000,5474
10,2-10000,3664
2、通过内部系统变量($RANDOM)
使用linux系统环境变量$random,直接就是随机数。
复制代码 代码示例:
[root@jbxue shell]$ echo $RANDOM
10918
[root@jbxue shell]$ echo $RANDOM
10001
#连续2次访问,结果不一样,这个数据是一个小于或等于5位的整数
#对于超过5位的随机数,加个固定10位整数,然后进行求余。
shell生成随机数的一些例子:
shell随机数进阶: