高精确度shell随机数生成代码,shell随机数函数示例

发布时间:2021-01-12编辑:脚本学堂
用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随机数进阶