linux下随机数字的生成
生活随笔
收集整理的這篇文章主要介紹了
linux下随机数字的生成
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
? 方法一: 命令大致如下: echo $((16#`dd if=/dev/urandom bs=1 count=4 2>/dev/null| od -A n -t x4|sed s/[^1-9a-fA-F]//g`)) 分開來看: echo $((16#ABC)) 意思是將十六進(jìn)制數(shù)ABC轉(zhuǎn)換成十進(jìn)制數(shù) `command` 意思是兩個`中間的命令執(zhí)行結(jié)果做為外殼命令的參數(shù) /dev/urandom 是個生成隨機(jī)數(shù)的設(shè)備,比/dev/random稍不安全,但產(chǎn)生速度極快 dd if=/dev/urndom bs=1 count=4 從隨機(jī)數(shù)設(shè)備中取前4個字節(jié)(32位數(shù)) 2>/dev/null 意思是將錯誤信息重定向到空設(shè)備中 od -A n -t x4 意思是將dd過來的數(shù)據(jù)(一個隨機(jī)的32位值)進(jìn)行轉(zhuǎn)換輸出,-A n是不輸出偏移標(biāo)志,-t x4是將數(shù)字用16進(jìn)制輸出,并且4個字節(jié)一組,這樣就以16進(jìn)制輸出一個32位的數(shù) sed s/[^1-9a-fA-F]//g 意思是去年輸出文件中非十六進(jìn)制可接受的字符(此例中主要是刪除行前的空格,也可以用tr -d?' ' 或 awk '{print $1}'處理) 方法二: date? --rfc-3339=ns|sed -n "s/.*\.0*\(.*\)+.*/\1/p" 利用date命令生成的納秒數(shù)作為隨機(jī)數(shù) 命令也可以用: date? --rfc-3339=ns|sed "s/\.0*\|+/\n/g"|sed -e 1d -e 3d 或 date? --rfc-3339=ns|awk -F "[ \t.+]" '{printf("%d\n",$3)}' 可以用 echo 表達(dá)式|bc 生成特定運(yùn)算結(jié)果,比如: echo $((16#`dd if=/dev/urandom bs=1 count=4 2>/dev/null| od -A n -t x4|sed s/[^1-9a-fA-F]//g`)) %1024|bc 可以生成0-1023范圍內(nèi)的隨機(jī)數(shù)
總結(jié)
以上是生活随笔為你收集整理的linux下随机数字的生成的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中秋吃惊
- 下一篇: linux自学视频资料第四讲:目录