生成隨機數幾種方式

一、bash有內建的隨機數生成器:

在shell中有一個環境變量RANDOM,它的范圍是0--32767

1、如果我們想要產生0-25范圍內的數,如何做呢?如下:

用這個環境變量對26取模,就可以得到最小是0,最大是25的數了。

echo [RANDOM%26]

2、如果想得到1--68范圍內的數,可以這樣
前面可以得到最小為0,最大為67的隨機數,再加上1,很自然的就可以得到最大為1,最小為68的數了。

echo [RANDOM%68+1]

3、如果想得到6--87范圍內的數。可以這樣

前面可以得到最小為0,最大為81的隨機數,再加上6,很自然的就可以得到最大為87,最小為6的數了。

echo $$[RANDOM%82+6]

通過上面三個例子,其它范圍內的數一樣可以用這種方法產生,總結出規律來
可以類推其它范圍內數了

二、Linux系統提供的隨機偽設備

介紹:
1、/dev/random和/dev/urandom是Linux系統中提供的隨機偽設備,這兩個設備的任務,是提供永不為空的隨機字節數據流。很多解密程序與安全應用程序(如SSH Keys,SSL Keys等)需要它們提供的隨機數據流。

2、這兩個設備的差異在于:/dev/random的random pool依賴于系統中斷,因此在系統的中斷數不足時,/dev/random設備會一直封鎖,嘗試讀取的進程就會進入等待狀態,直到系統的中斷數充分夠用, /dev/random設備可以保證數據的隨機性。/dev/urandom不依賴系統的中斷,也就不會造成進程忙等待,但是數據的隨機性也不高。

   什么時中斷?    
   中斷其實就是由硬件或軟件所發送的一種稱為IRQ(中斷請求)的信號。
   中斷允許讓設備,如鍵盤,串口卡,并口等設備表明它們需要CPU。
   一旦CPU接收了中斷請求,CPU就會暫時停止執行正在運行的程序,并且調用一個稱為中斷處理器或中斷服務程序(interrupt service routine)的特定程序。
   中斷服務程序或中斷處理器可以在中斷向量表中找到,而這個中斷向量表位于內存中的固定地址中。中斷被CPU處理后,就會恢復執行之前被中斷的程序。

3、dev/urandom 和dev/random,都是產生用不為空的隨機字符流,區別是
/dev/random設備會封鎖,直到系統產生的隨機字符流已經充分夠用,所以耗用時間較長
/dev/urandom設備不會封鎖,數據的隨機程度不高,但是一般情況已經夠用

4、使用/dev/random比使用/dev/urandom產生大量隨機數的速度要慢

[root@centos7 bin]#cat /dev/urandom | head -c15
g@ RJ?
[root@centos7 bin]#

通過過濾賽選可以取出隨機數或隨機字母如下
產生隨機字母方式:

[root@centos7 bin]#cat /dev/urandom | tr -dc '[:alpha:]' | head -c8

NbvFFlhs
[root@centos7 bin]#

產生隨機數字方式

[root@centos7 bin]#cat /dev/urandom 100 | tr -dc '[:digit:]'|head -c8
25786670
[root@centos7 bin]#

三、openssl rand 生成隨機字符

用途:
用來產生偽隨機字節。隨機數字產生器需要一個seed,先已經說過了,在沒有/dev/srandom系統下的解決方法是自己做一個~/.rnd文件。如果該程序能讓隨機數字產生器很滿意的被seeded。程序寫回一些怪怪的東西回該文件。
用法:

openssl rand [-out file] [-rand file(s)] [-base64] [-hex] num

選項說明:
-out file:結果輸出到file中。
-rand file(s):指定隨機數種子文件,多個文件間用分隔符分開,windows用“;”,OpenVMS用“,“,其他系統用“:”。
-base64:輸出結果為BASE64編碼數據。
-hex:輸出結果為16進制數據。
num:隨機數長度。

實例:

[root@centos7 bin]#openssl rand 12
*II+p?
[root@centos7 bin]#

可以看見,這12個字節的隨機數顯示為亂碼,可以對隨機字符串進行base64編碼或用hex格式顯示

[root@centos7 bin]#openssl rand -base64 30
Abpd8tiUxE4jiWxTi5ixuzPCv4U09/w1yl3/9zpn
[root@centos7 bin]#

[root@centos7 bin]#openssl rand -base64 -out outfile 30
[root@centos7 bin]#cat outfile
SbTi2ljqeX1Yoiga+P0CeEhQfTJ7TvEdRcTo/NK3
[root@centos7 bin]#

[root@centos7 bin]#openssl rand -hex 12
c4f80294bf1ccaf730155265
[root@centos7 bin]#openssl rand -base64 12
DLcY1c+cRGIAPntE

通過過濾賽選可以取出隨機數或隨機字母如下
產生隨機字母方式:

[root@centos7 bin]#openssl rand -base64 100 | tr -dc '[:alpha:]'|head -c8
gVbdJqeF
[root@centos7 bin]#openssl rand -base64 100 | tr -dc '[:alpha:]'|head -c8
ukuIhCkX
[root@centos7 bin]#

產生隨機數字方式

[root@centos7 bin]#openssl rand -base64 100 | tr -dc '[:digit:]'|head -c8
03448683
[root@centos7 bin]#openssl rand -base64 100 | tr -dc '[:digit:]'|head -c8
74737756
[root@centos7 bin]#

四、應用

字體加顏色
\033[33m 字符 \033[0m [[31m 字符 [[0m
隨機顏色
color=[RANDOM%8+31]
\033[${color}m 字符 \033[0m
存放顏色案例的文件
cat /etc/DIR_COLORS

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,646評論 6 533
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,595評論 3 418
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,560評論 0 376
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,035評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,814評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,224評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,301評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,444評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,988評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,804評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,998評論 1 370
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,544評論 5 360
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,237評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,665評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,927評論 1 287
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,706評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,993評論 2 374

推薦閱讀更多精彩內容