當前位置:首頁 » 編程軟體 » 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`

熱點內容
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:742
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:171
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513
蘋果手機清理瀏覽器緩存怎麼清理緩存 發布:2024-09-08 06:31:32 瀏覽:554