linux產生隨機數的方法

2021-10-03 02:51:21 字數 1002 閱讀 9721

#random的隨機數的範圍為:0~32767,加密性不是很好,可以通過在輸出的隨機數後增加加密字串的方式來解決,最後在一起執行md5操作並擷取最後的n位,這樣一來,就無法通過範圍來猜測出具體的結果。

令數字和大小寫相結合,並帶上特殊的字元,可以達到很長的位數,這樣的隨機數就很安全

[chengmo@centos5  shell]$ echo $random

10918

[chengmo@centos5 shell]$ echo $random

10001

#連續2次訪問,結果不一樣,這個資料是乙個小於或等於5位的整數

通過時間獲得隨機數(date)

date +%s%n #生成19位數字,1287764807051101270

date +%s%n | cut -c6-13 #取八位數字,21793709

date +%s%n | md5sum | head -c 8 #八位字母和數字的組合,87022fda

[root@centos5  shell]$ date +%s

1287764773

#獲得時間戳,當前到:1970-01-01 00:00:00 相隔的秒數

#如果用它做隨機數,相同一秒的資料是一樣的。在做迴圈處理,多執行緒裡面基本不能滿足要求了。

[root@centos5 shell]$ date +%n

738710457

#獲得當前時間的納秒資料,精確到億分之一秒。

#這個相當精確了,就算在多cpu,大量迴圈裡面,同一秒裡面,也很難出現相同結果,不過不同時間裡面還會有大量重複碰撞

[root@centos5 shell]$ date +%s%n

1287764807051101270

#這個可以說比較完美了,加入了時間戳,又加上了納秒

隨機數產生方法

隨機數的產生 現在的 c編譯器都提供了乙個基於 ansi標準的偽隨機數發生器函式,用來生成隨機數。它們就是 rand 和 srand 函式。這二個函式的工作過程如下 1 首先給 srand 提供乙個種子,它是乙個 unsigned int型別,其取值範圍從0 65535 2 然後呼叫 rand 它會...

linux產生隨機數

函式rand 是真正的隨機數生成器,而srand 會設定供rand 使用的隨機數種子。函式rand 會返回乙個處於0和你所指定的數值 缺 省為1 之間的分數。如果你在第一次呼叫rand 之前沒有呼叫srand 那麼系統會為你自動呼叫srand 而使用同種子相同的數呼叫 srand 會導致相同的隨機數...

產生隨機數的方法

產生隨機數的方法 使用兩個陣列 ran1,ran2。ran1 儲存的是資料,我們將其值設為其下標。ran2 儲存的是隨機資料,將 ran1 中隨機到的資料儲存到 ran2中。取完乙個資料後將 ran1 陣列中的最後乙個數移動到下標為隨機數的那個位置。n的位置改為 m,m是不斷變化的,即取出隨機數後剩...