歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

shell腳本如何獲取隨機數random

用C提供的取隨機數的方法srand和rand, 前者是給後者設置隨機數種子seed。

int rnd_num = 0;

srand(seed);       // time(NULL) 通常使用時間做種子

rnd_num = rand();  // 產生隨機數

產生種子的方法:

1. 使用日期時間

時間作為種子很簡單,取當前日期和時間,但是存在一個陷阱:當多台機器並發執行產生隨機數時,出現相同隨機數的概率非常高。不推薦這種方式

2. 使用$RANDOM

需要系統支持,通過echo來檢測, 打印出一個隨機數字,證明當前環境支持$RANDOM,反之為空不支持:

~@ubuntu:~$ echo $RANDOM

2517

3. 使用/dev/urandom + tr

tr -cd 0-9 </dev/urandom | head -c 8  // 取8位隨機種子

本欄目更多精彩內容:http://www.bianceng.cn/OS/Linux/

取完種子後使用awk來生成隨機數,這裡是一個簡單的函數rnd2, 參數$1和$2分別是生成隨機數的范圍

#$1 $2 是取值范圍
function rnd2() {
  if [ -z "$RANDOM" ] ; then
    SEED=`tr -cd 0-9 </dev/urandom | head -c 8`
  else
    SEED=$RANDOM
  fi
    
  RND_NUM=`echo $SEED $1 $2|awk '{srand($1);printf "%d",rand()*10000%($3-$2)+$2}'`
  echo $RND_NUM
}

寫了個循環,循環30次,執行後得到結果如下圖:

作者:cnblogs 懶人

Copyright © Linux教程網 All Rights Reserved