用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 懶人