当前位置:首页 » 编程软件 » shell脚本随机数

shell脚本随机数

发布时间: 2022-06-11 04:01:37

⑴ shell生成随机数的几种方法

(1)通过内部系统变量($RANDOM)
#!/bin/bash
function rand(){
min=$1
max=$(($2-$min+1))
num=$(($RANDOM+1000000000)) #增加一个10位的数再求余
echo $(($num%$max+$min))
}
rnd=$(rand 400000 500000)
echo $rnd
exit 0
(2)使用awk的随机函数
awk 'BEGIN{srand();print rand()*1000000}' #可以加上if判断,779644
(3)openssl rand产生随机数
openssl rand 用于产生指定长度个bytes的随机字符。-base64或-hex对随机字符串进行base64编码或用hex格式显示。
openssl rand -base64 8 | md5sum | cut -c1-8 #八位字母和数字的组合,3a61800e

openssl rand -base64 8 | cksum | cut -c1-8 #八位数字,10784736

(4)通过时间获得随机数(date)
date +%s%N #生成19位数字,1287764807051101270
date +%s%N | cut -c6-13 #取八位数字,21793709
date +%s%N | md5sum | head -c 8 #八位字母和数字的组合,87022fda

⑵ 有谁可以用Shell命令来产生随机数

#!/usr/bin/perl -w
#p.pl
use 5.010;
#-------------------

@a=map{chomp;$_}`cat @ARGV`;
#-------------------
until (@all==10){
(@b,@b,@c,$m,$n,@f,$h)=();

until (@b == @a){
$i=int(rand(@a));
next if $i ~~ @b;
push @f,$i if @f<@a/2;
$b[$m++]=$i;
$c[$n++]=$a[$i];

}

$h=join '',sort @f;
next if $h ~~ @all;
push @all,$h;

#-------------------

@r1=@c[0..@b/2-1];
@r2=@c[@b/2..@b-1];

#-------------------
$|=1;
print "\n==== ".++$p." ====\n\n";
print " file-1:\n\n";
for ( sort @r1){
print " $_\n";
}

print "\n file-2:\n\n";
for ( sort @r2){
print " $_\n";
}

}
file1:
1 A
2 B
3 C(+enter)

file2:
1 a
2 b
3 c(+enter)

实现:
perl p.pl file1 file2
save文件 perl p.pl file1 file2>file3

==== 1 ====

file-1:

2 B
3 C
3 c

file-2:

1 A
1 a
2 b

==== 2 ====

file-1:

1 A
1 a
3 c

file-2:

2 B
2 b
3 C

==== 3 ====

file-1:

1 A
2 B
2 b

file-2:

1 a
3 C
3 c

==== 4 ====

file-1:

1 a
2 B
3 c

file-2:

1 A
2 b
3 C

==== 5 ====

file-1:

1 A
2 b
3 C

file-2:

1 a
2 B
3 c

==== 6 ====

file-1:

2 B
2 b
3 C

file-2:

1 A
1 a
3 c

==== 7 ====

file-1:

1 A
2 b
3 c

file-2:

1 a
2 B
3 C

==== 8 ====

file-1:

1 A
3 C
3 c

file-2:

1 a
2 B
2 b

==== 9 ====

file-1:

2 B
2 b
3 c

file-2:

1 A
1 a
3 C

==== 10 ====

file-1:

1 A
2 B
3 c

file-2:

1 a
2 b
3 C

希望对您有帮助

回答补充::
难以理解,最好有个最好有
2个10行范例文件
and 1个排好序的范例文件
详细说明

⑶ 随机数shell脚本问题

for iterator in {1..10}
do
echo -n -e "$((RANDOM %10)) "
done 放到一个单独脚本里,用.引入此脚本

⑷ 要求,写一个shell脚本,不断回显1到10这10个随机数,只能在一行不断回显,按回车停止,显示最

while:
do
num=$((RANDOM%10+1))
printf"%2d"$num
ifread-t.3a
then
break
fi
printf""
done

⑸ shell怎么产生一个随机数,要求是0到1之间的,小数位数是16位

r
=
randi([iMin,iMax],m,n)在
开区间
(iMin,iMax)生成mXn型
随机矩阵
matlab中生成
随机数
主要有三个函数:rand,
randn,randi
1,rand
生成
均匀分布

伪随机数
。分布在(0~1)之间
主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数
rand(m,n,

⑹ shell 如何生成随机数

cat /proc/sys/kernel/random/uuid
7b57209a-d285-4fd0-88b4-9d3162d2e1bc
#连续2次读取,得到的uuid是不同的

cat /proc/sys/kernel/random/uuid| cksum | cut -f1 -d" "
2141807556

⑺ shell脚本生成[4,9]范围内的随机整数,包含边界值4和9,并将随机数序列存放在一个数组中,脚本实现

#!/bin/sh
declare -a arr #声明arr为数组
arr=(`seq 4 9 | awk 'BEGIN{srand();ORS=" "} {b[rand()]=$0} END{for(x in b) print b[x]}'`)
echo ${arr[*]} #打印数组array的所有元素
exit 0

说明:
生成[4,9]范围内不重复的随机整数,并保存到数组arr中。
seq 4 9 用于生成4~9的整数序列(包含边界值4和9)。
awk中的rand() 函数用于随机产生一个0到1之间的小数值(保留小数点后6位)。
由于rand()只生成一次随机数,要使用srand() 函数使随机数滚动生成(括号里留空即默认采用当前时间作为随机计数器的种子)。这样以秒为间隔,随机数就能滚动随机生成了。

限制:
由于以秒为间隔,所以如果快速连续运行两次脚本(1s内),你会发现生成的随机数还是一样的。

⑻ 如何用Shell脚本生成10个随机数并排序


i=1
while[$i-le10]
do
if[$i-eq1]
then
a[$i]=$RANDOM
else
j=$i
a[$j]=$RANDOM
while[$j-ge2]&&[${a[$j]}-le${a[$((j-1))]}]
do
t=${a[$j]}
a[$j]=${a[$((j-1))]}
a[$((j-1))]=$t
j=$((j-1))
done
fi
i=$((i+1))
done
echo${a[@]}

⑼ shell中如何获取随机数

echo $RANDOM

echo $[RANDOM % 10] 一位数
echo $[RANDOM % 100] 两位数

⑽ shell脚本怎么随机调用其他脚本

1. 计算出当前目录下以.sh结尾的脚本数目(假设头脚本不在这个文件夹里):num=`ls *.sh|wc -l`
2. 获取当前秒数:sec=`date +%s`
3. 基于脚本数目计算随机数(范围1~$num):randNum=`expr $sec % $num + 1`
4. 根据随机数调用脚本:sh /path/`ls|sed -n ${randNum}p`

热点内容
html文件上传表单 发布:2024-09-17 03:08:02 浏览:783
聊天软件编程 发布:2024-09-17 03:00:07 浏览:725
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662
情逢敌手迅雷下载ftp 发布:2024-09-17 01:32:35 浏览:337
安卓如何让软件按照步骤自动运行 发布:2024-09-17 01:28:27 浏览:197
Z包解压命令 发布:2024-09-17 01:27:51 浏览:221