欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁(yè) > 知識(shí)庫(kù) > linux shell實(shí)現(xiàn)隨機(jī)數(shù)幾種方法分享(date,random,uuid)

linux shell實(shí)現(xiàn)隨機(jī)數(shù)幾種方法分享(date,random,uuid)

熱門(mén)標(biāo)簽:測(cè)繪地圖標(biāo)注名稱(chēng) 百度地圖標(biāo)注直線距離 德陽(yáng)400電話申請(qǐng) 天津電話外呼系統(tǒng)排名 智能電銷(xiāo)機(jī)器人有用嗎 鶴崗400電話申請(qǐng) 怎么在百度地圖標(biāo)注公司的位置 商機(jī)地圖標(biāo)注 外呼電話系統(tǒng)怎么操作

在日常生活中,隨機(jī)數(shù)實(shí)際上經(jīng)常遇到,想丟骰子,抓鬮,還有抽簽。呵呵,非常簡(jiǎn)單就可以實(shí)現(xiàn)。那么在做程序設(shè)計(jì),真的要通過(guò)自己程序設(shè)計(jì)出隨機(jī)數(shù)那還真的不簡(jiǎn)單了。現(xiàn)在很多都是操作系統(tǒng)內(nèi)核會(huì)提供相應(yīng)的api,這些原始參數(shù)是獲取一些計(jì)算機(jī)運(yùn)行原始信息,如內(nèi)存,電壓,物理信號(hào)等等,它的值在一個(gè)時(shí)間段可以保證是唯一的了。好了,廢話我就不說(shuō)了。呵呵。

shell腳本程序我們有那些獲得隨機(jī)數(shù)方法呢?

一、通過(guò)時(shí)間獲得隨機(jī)數(shù)(date)

這個(gè)也是我們經(jīng)常用到的,可以說(shuō)時(shí)間是唯一的,也不會(huì)重復(fù)的,從這個(gè)里面獲得同一時(shí)間的唯一值。適應(yīng)所有程序里面了。

例子:

[chengmo@centos5  shell]$ date +%s
1287764773
#獲得時(shí)間戳,當(dāng)前到:1970-01-01 00:00:00 相隔的秒數(shù)
#如果用它做隨機(jī)數(shù),相同一秒的數(shù)據(jù)是一樣的。在做循環(huán)處理,多線程里面基本不能滿(mǎn)足要求了。
 
[chengmo@centos5  shell]$ date +%N
738710457
#獲得當(dāng)前時(shí)間的納秒數(shù)據(jù),精確到億分之一秒。
#這個(gè)相當(dāng)精確了,就算在多cpu,大量循環(huán)里面,同一秒里面,也很難出現(xiàn)相同結(jié)果,不過(guò)不同時(shí)間里面還會(huì)有大量重復(fù)碰撞
 
[chengmo@centos5  shell]$ date +%s%N
1287764807051101270
#這個(gè)可以說(shuō)比較完美了,加入了時(shí)間戳,又加上了納秒

通過(guò)上面說(shuō)明,用它來(lái)做隨機(jī)數(shù)的基數(shù)了,接下來(lái)我們看怎么樣獲得一段數(shù)據(jù)內(nèi)怎么樣獲得隨機(jī)數(shù)。

#!/bin/sh
 
#寫(xiě)個(gè)隨機(jī)函數(shù),調(diào)用方法random min max 
#在min 與 max直接獲得隨機(jī)整數(shù)
#copyright chengmo QQ:8292669
 
 
#獲得隨機(jī)數(shù)返回值,shell函數(shù)里算出隨機(jī)數(shù)后,更新該值
function random()
{
    min=$1;
    max=$2-$1;
    num=$(date +%s+%N);
    ((retnum=num%max+min));
    #進(jìn)行求余數(shù)運(yùn)算即可
    echo $retnum;
    #這里通過(guò)echo 打印出來(lái)值,然后獲得函數(shù)的,stdout就可以獲得值
    #還有一種返回,定義全價(jià)變量,然后函數(shù)改下內(nèi)容,外面讀取
}
 
#得到1-10的seq數(shù)據(jù)項(xiàng)
for i in {1..10};
do 
    out=$(random 2 10000);
    echo $i,"2-10000",$out;
done;

看看運(yùn)行結(jié)果:

[chengmo@centos5 shell]$ sh testrandom.sh
1,2-10000,5600
2,2-10000,5295
3,2-10000,3432
4,2-10000,3148
5,2-10000,9041
6,2-10000,4290
7,2-10000,2380
8,2-10000,9009
9,2-10000,5474
10,2-10000,3664

一個(gè)循環(huán)里面,得到值各不相同。

這個(gè)是我們常用方法,適應(yīng)各種語(yǔ)言,是一個(gè)通用算法,就算服務(wù)器不提供,某時(shí)刻相同唯一數(shù)據(jù)標(biāo)記,我們也可以通過(guò)這種方法,做自己的偽隨機(jī)數(shù)。下面還有更簡(jiǎn)單方法呢,不要我們自己做了。

2、通過(guò)內(nèi)部系統(tǒng)變量($RANDOM)

其實(shí),linux已經(jīng)提供有個(gè)系統(tǒng)環(huán)境變量了,直接就是隨機(jī)數(shù),哈哈,覺(jué)得剛學(xué)習(xí)方法,是不是白費(fèi)了!!

[chengmo@centos5  shell]$ echo $RANDOM
10918
[chengmo@centos5  shell]$ echo $RANDOM
10001
 
#連續(xù)2次訪問(wèn),結(jié)果不一樣,這個(gè)數(shù)據(jù)是一個(gè)小于或等于5位的整數(shù)

可能有疑問(wèn)了,如果超過(guò)5位的隨機(jī)數(shù)怎么得到呢?

呵呵,加個(gè)固定10位整數(shù),然后進(jìn)行求余,跟例1 一樣了。接下來(lái)的例子又是我們自立更生做了。

3、通過(guò)系統(tǒng)內(nèi)部唯一數(shù)據(jù)生成隨機(jī)數(shù)(/dev/random,urandom)

我們知道dev目錄下面,是linux一些默認(rèn)設(shè)備,它給我們感覺(jué)就是放的是鍵盤(pán),硬盤(pán),光驅(qū)等設(shè)備的對(duì)應(yīng)文件了。 其實(shí)linux有些設(shè)備很特殊,有特殊用途。前面我們說(shuō)到的:/dev/[udp|tcp]/host/port比較特殊吧。呵呵,有扯遠(yuǎn)了。

/dev/random設(shè)備,存儲(chǔ)著系統(tǒng)當(dāng)前運(yùn)行的環(huán)境的實(shí)時(shí)數(shù)據(jù)。它可以看作是系統(tǒng)某個(gè)時(shí)候,唯一值數(shù)據(jù),因此可以用作隨機(jī)數(shù)元數(shù)據(jù)。我們可以通過(guò)文件讀取方式,讀得里面數(shù)據(jù)。/dev/urandom這個(gè)設(shè)備數(shù)據(jù)與random里面一樣。只是,它是非阻塞的隨機(jī)數(shù)發(fā)生器,讀取操作不會(huì)產(chǎn)生阻塞。

實(shí)例:

[chengmo@centos5  shell]$ head -1 /dev/urandom
ãņù…•KTþçanVÕã¹Û¡õ¾“ô2íùU“ žF¦_ ÿ”†mEðûUráÏ=J¯TŸA•ÌAÚRtÓ
 
#讀一行,怎么是亂碼呢?其實(shí)它是通過(guò)二進(jìn)制數(shù)據(jù)保存實(shí)時(shí)數(shù)據(jù)的,那么我們?cè)趺礃影阉兂烧蛿?shù)據(jù)呢?
 
 
[chengmo@centos5 ~/shell]$ head -200 /dev/urandom | cksum
1615228479 50333
#由于urandom的數(shù)據(jù)是非常多,不能直接通過(guò)cat讀取,這里取前200行,其實(shí)整個(gè)數(shù)據(jù)都是變化的,取多少也一樣是唯一的。
#cksum 將讀取文件內(nèi)容,生成唯一的表示整型數(shù)據(jù),只有文件內(nèi)容不變,生成結(jié)果就不會(huì)變化,與php crc函數(shù)
 
[chengmo@centos5  shell]$ head -200 /dev/urandom | cksum | cut -f1 -d" "
484750180
#cut 以” “分割,然后得到分割的第一個(gè)字段數(shù)據(jù)

得到整型數(shù)據(jù),然后,類(lèi)似一的方法就可以獲得到隨機(jī)數(shù)了。 題外話:在程序里面,我們經(jīng)常md5得到唯一值,然后是字符串的,如果想表示成整型方式,可以通過(guò)crc函數(shù).crc是循環(huán)冗余校驗(yàn),相同數(shù)據(jù)通過(guò)運(yùn)算,都會(huì)得到一串整型數(shù)據(jù)。現(xiàn)在這種驗(yàn)證應(yīng)用很廣。詳細(xì)要了解,可以參考:crc.

下面還有個(gè)方法,直接從設(shè)備讀取生成好的uuid碼。

4、讀取linux 的uuid碼

在提到這個(gè)之前,有個(gè)概念,就是什么是uuid呢?

UUID碼全稱(chēng)是通用唯一識(shí)別碼 (Universally Unique Identifier, UUID),它 是一個(gè)軟件建構(gòu)的標(biāo)準(zhǔn),亦為自由軟件基金會(huì) (Open Software Foundation, OSF) 的組織在分布式計(jì)算環(huán)境 (Distributed Computing Environment, DCE) 領(lǐng)域的一部份。

UUID 的目的,是讓分布式系統(tǒng)中的所有元素,都能有唯一的辨識(shí)信息,而不需要通過(guò)中央控制端來(lái)做辨識(shí)信息的指定。如此一來(lái),每個(gè)人都可以創(chuàng)建不與其它人沖突的 UUID。在這樣的情況下,就不需考慮數(shù)據(jù)庫(kù)創(chuàng)建時(shí)的名稱(chēng)重復(fù)問(wèn)題。它會(huì)讓網(wǎng)絡(luò)任何一臺(tái)計(jì)算機(jī)所生成的uuid碼,都是互聯(lián)網(wǎng)整個(gè)服務(wù)器網(wǎng)絡(luò)中唯一的。它的原信息會(huì)加入硬件,時(shí)間,機(jī)器當(dāng)前運(yùn)行信息等等。

UUID格式是:包含32個(gè)16進(jìn)位數(shù)字,以“-”連接號(hào)分為五段,形式為8-4-4-4-12的32個(gè)字符。范例;550e8400-e29b-41d4-a716-446655440000 ,所以:UUID理論上的總數(shù)為216 x 8=2128,約等于3.4 x 1038。 也就是說(shuō)若每奈秒產(chǎn)生1兆個(gè)UUID,要花100億年才會(huì)將所有UUID用完。

其實(shí),大家做數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)候,肯定聽(tīng)說(shuō)過(guò),guid(全局唯一標(biāo)識(shí)符)碼,它其實(shí)是與uuid類(lèi)似,由微軟支持。 這里編碼,基本有操作系統(tǒng)內(nèi)核產(chǎn)生。大家記得把,在windows里面,無(wú)論數(shù)據(jù)庫(kù),還是其它軟件,很容易得到這個(gè)uuid編碼。

linux 的uuid碼

linux的uuid碼也是有內(nèi)核提供的,在/proc/sys/kernel/random/uuid這個(gè)文件內(nèi)。其實(shí),random目錄,里面還有很多其它文件,都與生成uuid有關(guān)系的。

[chengmo@centos5 ~/shell]$ cat /proc/sys/kernel/random/uuid
dff68213-b700-4947-87b1-d9e640334196
[chengmo@centos5 ~/shell]$ cat /proc/sys/kernel/random/uuid
7b57209a-d285-4fd0-88b4-9d3162d2e1bc
#連續(xù)2次讀取,得到的uuid是不同的
 
[chengmo@centos5 ~/shell]$ cat /proc/sys/kernel/random/uuid| cksum | cut -f1 -d" "
2141807556
#同上方法得到隨機(jī)整數(shù)

這是linux下面,幾種常見(jiàn)活動(dòng)隨機(jī)數(shù)整數(shù)方法,除了第一個(gè)是不同外,其實(shí)后3個(gè),產(chǎn)生隨機(jī)碼的偽數(shù)據(jù)來(lái)源,都與/dev/random設(shè)備有關(guān)系。只是它們各自呈現(xiàn)不同而已。如果你還有更多其它方法,請(qǐng)給我消息,與大家分享了。

您可能感興趣的文章:
  • Linux Shell 生成隨機(jī)數(shù)和隨機(jī)字符串的方法示例
  • shell 生成隨機(jī)數(shù)的實(shí)現(xiàn)方法總結(jié)
  • Linux Shell里面生成隨機(jī)數(shù)的一些思路分析
  • Shell腳本實(shí)現(xiàn)隨機(jī)數(shù)多種方法介紹(date、random、uuid)
  • shell產(chǎn)生隨機(jī)數(shù)七種方法的實(shí)現(xiàn)

標(biāo)簽:丹東 百色 優(yōu)質(zhì)小號(hào) 武漢 鎮(zhèn)江 滁州 自貢 六盤(pán)水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《linux shell實(shí)現(xiàn)隨機(jī)數(shù)幾種方法分享(date,random,uuid)》,本文關(guān)鍵詞  linux,shell,實(shí)現(xiàn),隨機(jī)數(shù),幾種,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《linux shell實(shí)現(xiàn)隨機(jī)數(shù)幾種方法分享(date,random,uuid)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于linux shell實(shí)現(xiàn)隨機(jī)數(shù)幾種方法分享(date,random,uuid)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    欧美疯狂做受xxxx富婆| 亚洲欧美二区三区| 免费看日韩精品| 国产真实乱人偷精品| 欧美日韩二区三区| 午夜视频在线观看一区二区| 在线精品视频播放| 91国内精品野花午夜精品| 欧美18—19性高清hd4k| 欧美一三区三区四区免费在线看| 一区二区三区欧美亚洲| 在线观看网站黄| 欧美中文一区二区三区| 亚洲综合图片区| 欧洲熟妇的性久久久久久| 欧美嫩在线观看| 日韩国产欧美三级| 亚洲永久精品ww.7491进入| 欧美电视剧在线看免费| 久久精品国产99国产| a资源在线观看| 欧美国产精品中文字幕| 成人午夜看片网址| 欧美亚洲综合另类| 午夜av电影一区| 久久精品成人av| 国产日产欧产精品推荐色| 国v精品久久久网| 色av成人天堂桃色av| 亚洲国产精品一区二区久久恐怖片 | 二区三区四区视频| 国产精品不卡视频| 九色91porny| 91精品国产综合久久久蜜臀图片| 美女久久久精品| 国产成人av电影免费在线观看| 毛片不卡一区二区| 免费看黄色三级| 欧美国产亚洲另类动漫| 成人动漫视频在线| 欧美日韩第一区日日骚| 麻豆91精品视频| 多男操一女视频| 亚洲精品乱码久久久久久黑人| 亚洲v在线观看| 精品日本一线二线三线不卡| 国产精品夜夜爽| 色婷婷狠狠综合| 亚洲五码中文字幕| 日韩一区二区a片免费观看| 国产精品视频在线看| 成年人看片网站| 精品久久久影院| 不卡大黄网站免费看| 制服丝袜日韩国产| 国产很黄免费观看久久| 欧美美女喷水视频| 黄网站免费久久| 色综合天天综合在线视频| 日本中文在线一区| 蜜桃av.com| 一区二区三区在线视频免费观看| 欧美熟妇精品黑人巨大一二三区| 日本一区二区在线不卡| 免费看91视频| 欧美激情一区二区在线| 91porn在线| 精品福利一二区| 99热这里都是精品| 久久综合五月天婷婷伊人| 91视频免费入口| 久久精品一区蜜桃臀影院| 国产xxx在线观看| 中文字幕欧美日本乱码一线二线| 污污污www精品国产网站| 国产精品视频一二三区| 色婷婷av777| 樱桃视频在线观看一区| 91社区视频在线观看| 亚洲国产精品久久人人爱蜜臀| 少妇无套高潮一二三区| 亚洲妇女屁股眼交7| 精品无码一区二区三区蜜臀 | 欧美成人精品高清在线播放| 成人污污视频在线观看| 精品国产91久久久久久久妲己| 成年人性生活视频| 国产精品网站在线播放| 一级片手机在线观看| 一区二区三区欧美日韩| 久草视频手机在线| 精品无人码麻豆乱码1区2区 | 国产成人精品免费| 在线播放中文一区| 91免费版pro下载短视频| 中国色在线观看另类| 国产精品国产三级国产专业不| 午夜精品久久久久| 欧美日韩精品福利| 91热门视频在线观看| 亚洲欧美自拍偷拍色图| 国产探花视频在线| 欧美aaaaaa午夜精品| 欧美久久久影院| 成年人看片网站| 亚洲黄网站在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 国产精品一区二区男女羞羞无遮挡| 欧美成人三级电影在线| 欧美xxxxx精品| 一级精品视频在线观看宜春院| 色婷婷久久久综合中文字幕| 国产成人免费视| 欧美国产精品一区| 日韩一区二区三区四区视频| 国产一区二区精品久久| 久久久久国产免费免费| 亚洲精品成人无码| 久久99精品久久久| 久久综合九色综合欧美亚洲| 免费一级做a爰片久久毛片潮| 日本91福利区| 精品国产免费一区二区三区四区| 一卡二卡三卡四卡| 看国产成人h片视频| 精品理论电影在线| 亚洲一区二区自偷自拍| 国产v综合v亚洲欧| 麻豆明星ai换脸视频| 黄色成人免费在线| 久久精品人人爽人人爽| 福利视频第一页| 高清不卡在线观看| 日韩美女啊v在线免费观看| 五月天丁香激情| 97se亚洲国产综合自在线| 亚洲狼人国产精品| 欧美人动与zoxxxx乱| 久久久国产精品无码| 毛片av一区二区| 国产亚洲精久久久久久| 黄色片子在线观看| 91视视频在线直接观看在线看网页在线看| 亚洲男女一区二区三区| 欧美日韩日本视频| 国产又粗又长又爽| 国内精品国产三级国产a久久| 亚洲国产成人私人影院tom| 色综合视频一区二区三区高清| 97免费公开视频| 日韩国产精品久久久久久亚洲| 精品国产一区二区三区不卡| 在线观看免费黄色网址| 成人av网站在线观看| 亚洲一区二区三区美女| 日韩欧美在线1卡| 情侣偷拍对白清晰饥渴难耐| 97久久超碰国产精品| 日韩综合小视频| 国产欧美日韩精品一区| 在线观看网站黄不卡| 无码人妻aⅴ一区二区三区 | 中文字幕综合网| 欧美日韩免费一区二区三区视频 | 亚洲最大免费视频| 国产尤物一区二区| 亚洲码国产岛国毛片在线| 日韩一区二区三区免费看 | 奇米在线7777在线精品| 欧美激情一区三区| 欧美日韩精品免费观看视频| 亚洲国产日韩一区无码精品久久久| 国产成人免费视频网站高清观看视频| 一区二区三区在线免费观看| 日韩欧美另类在线| 色综合中文字幕| 91精品人妻一区二区| 成人一区二区视频| 视频精品一区二区| 国产精品久久久久久亚洲毛片| 777亚洲妇女| 国产精品久久久免费看| 四虎精品一区二区| 国产不卡视频一区| 肉肉av福利一精品导航| 国产精品蜜臀在线观看| 欧美一区二区三区免费在线看 | 91免费小视频| 黄色资源网久久资源365| 亚洲综合色区另类av| 久久久精品欧美丰满| 欧美午夜精品理论片a级按摩| 青娱乐国产视频| 99免费观看视频| 国产91精品免费| 老司机精品视频线观看86| 一区二区高清免费观看影视大全| 久久久99精品久久| 日韩午夜精品电影| 欧美在线短视频|