說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732
全網(wǎng)監(jiān)測海量數(shù)據(jù)按需發(fā)布監(jiān)測預(yù)警
實(shí)時(shí)把握輿情動(dòng)態(tài)精準(zhǔn)追溯信息源頭
在實(shí)驗(yàn)或者是其他需要用到數(shù)字的時(shí)候,我們經(jīng)常會需要用到隨機(jī)數(shù)字,這時(shí)我們就需要借助一些神隨機(jī)字生成器來達(dá)到我們的目的,可隨機(jī)數(shù)字生成器有哪些呢?接下來我們就一起來好好的了解一下吧。
隨機(jī)數(shù)字生成器——隨機(jī)數(shù)字生成器的種類
偽隨機(jī)數(shù)與偽隨機(jī)數(shù)生成器
計(jì)算機(jī)是確定性的機(jī)器,因此它無法直接生成真正的隨機(jī)數(shù),而渾沌系統(tǒng)的隨機(jī)數(shù)生成速度又比較慢,在許多情況下不適合作為快速的(偽)隨機(jī)數(shù)庫函數(shù)算法??焖俚膫坞S機(jī)數(shù)生成算法中最著名的要數(shù)linear-congruentialmethod(線性同余法),也就是:
Xn+1=(aXn+b)%c
//%就是C/C++中的MOD(同余)運(yùn)算符
這種方法可以從一個(gè)種子X0=seed開始,連續(xù)生成任意長的偽隨機(jī)數(shù)序列Xn。它的運(yùn)算過程極其簡單,并且如果令c=2m,其中m為Xn的字長,則連MOD運(yùn)算都直接省掉了——Xn+1≥2m時(shí)高位自動(dòng)溢出而被截除。用這種辦法生成的偽隨機(jī)數(shù)序列,在給定范圍和精度內(nèi)確實(shí)滿足均勻分布的要求,但是并非連續(xù)分布,因?yàn)橛?jì)算機(jī)存放數(shù)據(jù)的精度不是無限!正是由于最小數(shù)據(jù)間隙的存在,該序列將會以一個(gè)相當(dāng)長的周期循環(huán)。
混沌動(dòng)力學(xué)系統(tǒng)產(chǎn)生的隨機(jī)數(shù)
對于一般的科學(xué)研究來說,只要保證偽隨機(jī)數(shù)的內(nèi)在規(guī)律不與所研究的自然規(guī)律相似,并且在所需數(shù)據(jù)精度下呈現(xiàn)“準(zhǔn)連續(xù)的均勻分布”即可,而對“由少量數(shù)據(jù)反推生成規(guī)律”這種反向工程的困難程度不作限制。有時(shí)甚至還需要一種簡單清晰的生成規(guī)律,以便確認(rèn)這種規(guī)律是否與所研究的自然規(guī)律相似。
但是,在數(shù)據(jù)加密的時(shí)候,往往對這種反向工程極為擔(dān)心,因此需要設(shè)計(jì)一種難于被反推出的生成規(guī)律。由大質(zhì)數(shù)組合出巨大合數(shù)的乘法對反向工程來說相當(dāng)困難,但是它需要用特殊的、巨大的數(shù)據(jù)結(jié)構(gòu)來存放數(shù)據(jù)和進(jìn)行運(yùn)算,因此不適合用于擴(kuò)展成為快速產(chǎn)生偽隨機(jī)數(shù)的算法。
硬件隨機(jī)數(shù)生成器
正因?yàn)橛布S機(jī)數(shù)生成器產(chǎn)生的數(shù)字完全是隨機(jī)的,即使是設(shè)計(jì)和使用它的人也無法找到這些真隨機(jī)數(shù)的生成規(guī)律,所以用一個(gè)軟件來精確的校正其分布變得相當(dāng)困難,必須使用大量統(tǒng)計(jì)數(shù)據(jù)獲得經(jīng)驗(yàn)校正函數(shù),而且還不能保持非常好的校正精度,這一點(diǎn)對加密應(yīng)用來說問題不大,但是對于科學(xué)計(jì)算而言就會大大降低計(jì)算結(jié)果的精度。
Excel怎么隨機(jī)生成數(shù)字
首先介紹一下如何用RAND()函數(shù)來生成隨機(jī)數(shù)(同時(shí)返回多個(gè)值時(shí)是不重復(fù)的)。
在單元格中輸入=RAND(),回車后單元格即返回了一個(gè)隨機(jī)數(shù)字。
RAND()函數(shù)返回的隨機(jī)數(shù)字的范圍是大于0小于1。因此,也可以用它做基礎(chǔ)來生成給定范圍內(nèi)的隨機(jī)數(shù)字。
生成制定范圍的隨機(jī)數(shù)方法是這樣的,假設(shè)給定數(shù)字范圍最小是A,最大是B,公式是:
=A+RAND()*(B-A)。
舉例來說,要生成大于60小于100的隨機(jī)數(shù)字,因?yàn)?100-60)*RAND()返回結(jié)果是0到40之間,加上范圍的下限60就返回了60到100之間的數(shù)字。
上面RAND()函數(shù)返回的0到1之間的隨機(jī)小數(shù),如果要生成隨機(jī)整數(shù)的話就需要用RANDBETWEEN()函數(shù)了,該函數(shù)生成大于等于1小于等于100的隨機(jī)整數(shù)。
這個(gè)函數(shù)的語法是這樣的:=RANDBETWEEN(范圍下限整數(shù),范圍上限整數(shù)),結(jié)果返回包含上下限在內(nèi)的整數(shù)。注意:上限和下限也可以不是整數(shù),并且可以是負(fù)數(shù)。
RAND()和RANDBETWEEN()是生成隨機(jī)數(shù)的基礎(chǔ)函數(shù),也可以靈活變通。比如說要生成0.01至1之間包含兩位小數(shù)的隨機(jī)數(shù),則可用下圖的公式實(shí)現(xiàn):
以上就是隨機(jī)數(shù)據(jù)生成器有哪些的所有內(nèi)容,大家可以根據(jù)自己的需求來選擇不同的隨機(jī)數(shù)據(jù)生成器,如果各位還想了解更多與之有關(guān)的信息,歡迎關(guān)注我們文軍營銷的官網(wǎng)。
推薦閱讀
說明:如果您有任何疑問或想咨詢其他業(yè)務(wù)請撥打電話 400 685 0732