HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    破解偽隨機(jī)數(shù)算法(怎么破解偽隨機(jī)數(shù))

    發(fā)布時(shí)間:2023-05-31 20:47:03     稿源: 創(chuàng)意嶺    閱讀: 129        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于綠色偽隨機(jī)數(shù)算法的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對話答疑等等BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,有小程序、在線網(wǎng)頁版、PC客戶端和批量生成器BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    官網(wǎng):https://ai.de1919.comBfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    本文目錄:BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    綠色偽隨機(jī)數(shù)算法(怎么綠色偽隨機(jī)數(shù))BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    偽隨機(jī)置換的原理BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    原理:在計(jì)算機(jī)中并沒有一個(gè)真正的隨機(jī)數(shù)發(fā)生器,但是可以做到使產(chǎn)生的數(shù)字重復(fù)率很低,這樣看起來好象是真正的隨機(jī)數(shù),實(shí)現(xiàn)這一功能的程序叫偽隨機(jī)數(shù)發(fā)生器。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    接受拒絕法:假設(shè)希望生成的隨機(jī)數(shù)的概率密度函數(shù)(PDF)為f,則首先找到一個(gè)PDF為g的隨機(jī)數(shù)發(fā)生器與常數(shù)c,使得f(x)≤cg(x),然后根據(jù)接收拒絕算法求解。由于算法平均運(yùn)算c次才能得到一個(gè)希望生成的隨機(jī)數(shù),因此c的取值必須盡可能小。顯然,該算法的缺點(diǎn)是較難確定g與c。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    含義BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    這個(gè)函數(shù)用來移動(dòng)內(nèi)存數(shù)據(jù),其中FP_SEG(far pointer to segment)是取temp數(shù)組段地址的函數(shù),F(xiàn)P_OFF(far pointer to offset)是取temp數(shù)組相對地址的函數(shù),movedata函數(shù)的作用是把位于0040:006CH存儲(chǔ)單元中的雙字放到數(shù)組temp的聲明的兩個(gè)存儲(chǔ)單元中。這樣可以通過temp數(shù)組把0040:006CH處的一個(gè)16位的數(shù)送給RAND_SEED。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    以上內(nèi)容參考:百度百科-偽隨機(jī)數(shù)BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    隨機(jī)數(shù)算法是什么?BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    在計(jì)算機(jī)中并沒有一個(gè)真正的隨機(jī)數(shù)發(fā)生器,但是可以做到使產(chǎn)生的數(shù)字重復(fù)率很低,這樣看起來好象是真正的隨機(jī)數(shù),實(shí)現(xiàn)這一功能的程序叫偽隨機(jī)數(shù)發(fā)生器?!∮嘘P(guān)如何產(chǎn)生隨機(jī)數(shù)的理論有許多如果要詳細(xì)地討論,需要厚厚的一本書的篇幅。不管用什么方法實(shí)現(xiàn)隨機(jī)數(shù)發(fā)生器,都必須給它提供一個(gè)名為“種子”的初始值。而且這個(gè)值最好是隨機(jī)的,或者至少這個(gè)值是偽隨機(jī)的?!胺N子”的值通常是用快速計(jì)數(shù)寄存器或移位寄存器來生成的?!∠旅嬷v一講在C語言里所提供的隨機(jī)數(shù)發(fā)生器的用法?,F(xiàn)在的C編譯器都提供了一個(gè)基于ANSI標(biāo)準(zhǔn)的偽隨機(jī)數(shù)發(fā)生器函數(shù),用來生成隨機(jī)數(shù)。它們就是rand()和srand()函數(shù)。這二個(gè)函數(shù)的工作過程如下:”) 首先給srand()提供一個(gè)種子,它是一個(gè)unsigned int類型,其取值范圍從0~65535; 2) 然后調(diào)用rand(),它會(huì)根據(jù)提供給srand()的種子值返回一個(gè)隨機(jī)數(shù)(在0到32767之間) 3) 根據(jù)需要多次調(diào)用rand(),從而不間斷地得到新的隨機(jī)數(shù); 4) 無論什么時(shí)候,都可以給srand()提供一個(gè)新的種子,從而進(jìn)一步“隨機(jī)化”rand()的輸出結(jié)果。 這個(gè)過程看起來很簡單,問題是如果你每次調(diào)用srand()時(shí)都提供相同的種子值,那么,你將會(huì)得到相同的隨機(jī)數(shù)序列,這時(shí)看到的現(xiàn)象是沒有隨機(jī)數(shù),而每一次的數(shù)都是一樣的了。例如,在以17為種子值調(diào)用srand()之后,在首次調(diào)用rand()時(shí),得到隨機(jī)數(shù)94。在第二次和第三次調(diào)用rand()時(shí)將分別得到26602和30017,這些數(shù)看上去是很隨機(jī)的(盡管這只是一個(gè)很小的數(shù)據(jù)點(diǎn)集合),但是,在你再次以17為種子值調(diào)用srand()后,在對于rand()的前三次調(diào)用中,所得的返回值仍然是在對94,26602,30017,并且此后得到的返回值仍然是在對rand()的第一批調(diào)用中所得到的其余的返回值。因此只有再次給srand()提供一個(gè)隨機(jī)的種子值,才能再次得到一個(gè)隨機(jī)數(shù)?!∠旅娴睦佑靡环N簡單而有效的方法來產(chǎn)生一個(gè)相當(dāng)隨機(jī)的“種子”值----當(dāng)天的時(shí)間值:g#椋睿悖歟酰洌澹Γ歟?;stdieP瑁Γ紓簦弧。#椋睿悖歟酰洌澹Γ歟簦唬螅簦洌歟椋猓瑁Γ紓?;?。#椋睿悖歟酰洌澹Γ歟簦唬螅螅Γ#矗罰唬簦穡澹螅瑁Γ紓?;?。#椋睿悖歟酰洌澹Γ歟簦唬螅螅Γ#矗罰唬簦椋恚澹猓瑁Γ紓?;?。觶錚椋洹。恚幔椋睿ǎ觶錚椋洌。。椋睿簟。?;?。酰睿螅椋紓睿澹洹。椋睿簟。螅澹澹洌鄭幔歟弧。螅簦潁酰悖簟。簦椋恚澹狻。簦椋恚澹攏酰媯弧。媯簦椋恚澹ǎΓ幔恚穡唬簦椋恚澹攏酰媯弧。螅澹澹洌鄭幔歟劍ǎǎǎǎ酰睿螅椋紓睿澹洹。椋睿簦簦椋恚澹攏酰媯簦椋恚澹Γ幔恚穡唬埃疲疲疲疲。ǎ酰睿螅椋紓睿澹洹。椋睿簦簦椋恚澹攏酰媯恚椋歟歟椋簦恚蕖。ǎ酰睿螅椋紓睿澹洹。椋睿簦簦椋恚澹攏酰媯恚椋歟歟椋簦恚弧。螅潁幔睿洌ǎǎ酰睿螅椋紓睿澹洹。椋睿簦螅澹澹洌鄭幔歟弧。媯錚潁ǎ椋劍埃唬椋Γ歟?;10;?#57440;椋。穡潁椋睿簦媯ǎΓ瘢酰錚簦唬ィ叮洌Γ#梗?;n&queP?;begjrand()); } 上面的程序先是調(diào)用_ftime()來檢查當(dāng)前時(shí)間yc并把它的值存入結(jié)構(gòu)成員timeBuf.time中wae當(dāng)前時(shí)間的值從1970年1月1日開始以秒計(jì)算aeh在調(diào)用了_ftime()之后在結(jié)構(gòu)timeBuf的成員millitm中還存入了當(dāng)前那一秒已經(jīng)度過的毫秒數(shù),但在DOS中這個(gè)數(shù)字實(shí)際上是以百分之一秒來計(jì)算的。然后,把毫秒數(shù)和秒數(shù)相加,再和毫秒數(shù)進(jìn)行異或運(yùn)算。當(dāng)然也可以對這兩個(gè)結(jié)構(gòu)成員進(jìn)行更多的計(jì)算,以控制se......余下全文>>

    綠色偽隨機(jī)數(shù)算法(怎么綠色偽隨機(jī)數(shù))BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    隨機(jī)數(shù)和偽隨機(jī)數(shù)的計(jì)算公式都是什么呀?BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

      為追求真正的隨機(jī)序列,人們曾采用很多種原始的物理方法用于生成一定范圍內(nèi)滿足精度(位數(shù))的均勻分布序列,其缺點(diǎn)在于:速度慢、效率低、需占用大量存儲(chǔ)空間且不可重現(xiàn)等。為滿足計(jì)算機(jī)模擬研究的需求,人們轉(zhuǎn)而研究用算法生成模擬各種概率分布的偽隨機(jī)序列。偽隨機(jī)數(shù)是指用數(shù)學(xué)遞推公式所產(chǎn)生的隨機(jī)數(shù)。從實(shí)用的角度看,獲取這種數(shù)的最簡單和最自然的方法是利用計(jì)算機(jī)語言的函數(shù)庫提供的隨機(jī)數(shù)發(fā)生器。典型情況下,它會(huì)輸出一個(gè)均勻分布在0和1區(qū)間內(nèi)的偽隨機(jī)變量的值。其中應(yīng)用的最為廣泛、研究最徹底的一個(gè)算法即線性同余法。
      線性同余法LCG(Linear Congruence Generator)
      選取足夠大的正整數(shù)M和任意自然數(shù)n0,a,b,由遞推公式:
      ni+1=(af(ni)+b)mod M i=0,1,…,M-1
      生成的數(shù)值序列稱為是同余序列。當(dāng)函數(shù)f(n)為線性函數(shù)時(shí),即得到線性同余序列:
      ni+1=(a*ni+b)mod M i=0,1,…,M-1
      以下是線性同余法生成偽隨機(jī)數(shù)的偽代碼:
      Random(n,m,seed,a,b)
      {
      r0 = seed;
      for (i = 1;i<=n;i++)
      ri = (a*ri-1 + b) mod m
      }
      其中種子參數(shù)seed可以任意選擇,常常將它設(shè)為計(jì)算機(jī)當(dāng)前的日期或者時(shí)間;m是一個(gè)較大數(shù),可以把它取為2w,w是計(jì)算機(jī)的字長;a可以是0.01w和0.99w之間的任何整數(shù)。
      應(yīng)用遞推公式產(chǎn)生均勻分布隨機(jī)數(shù)時(shí),式中參數(shù)n0,a,b,M的選取十分重要。
      例如,選取M=10,a=b =n0=7,生成的隨機(jī)序列為{6,9,0,7,6,9,……},周期為4。
      取M=16,a=5,b =3,n0=7,生成的隨機(jī)序列為{6,1,8,11,10,5,12,15,14,9,0,3,2,13,4,7,6,1……},周期為16。
      取M=8,a=5,b =1,n0=1,生成的隨機(jī)序列為{6,7,4,5,2,3,0,1,6,7……},周期為8。
      Visual C++中偽隨機(jī)數(shù)生成機(jī)制
      用VC產(chǎn)生隨機(jī)數(shù)有兩個(gè)函數(shù),分別為rand(void)和srand(seed)。rand()產(chǎn)生的隨機(jī)整數(shù)是在0~RAND_MAX之間平均分布的,RAND_MAX是一個(gè)常量(定義為:#define RAND_MAX 0x7fff)。它是short型數(shù)據(jù)的最大值,如果要產(chǎn)生一個(gè)浮點(diǎn)型的隨機(jī)數(shù),可以將rand()/1000.0,這樣就得到一個(gè)0~32.767之間平均分布的隨機(jī)浮點(diǎn)數(shù)。如果要使得范圍大一點(diǎn),那么可以通過產(chǎn)生幾個(gè)隨機(jī)數(shù)的線性組合來實(shí)現(xiàn)任意范圍內(nèi)的平均分布的隨機(jī)數(shù)。
      其用法是先調(diào)用srand函數(shù),如
      srand( (unsigned)time( NULL ) )
      這樣可以使得每次產(chǎn)生的隨機(jī)數(shù)序列不同。如果計(jì)算偽隨機(jī)序列的初始數(shù)值(稱為種子)相同,則計(jì)算出來的偽隨機(jī)序列就是完全相同的。要解決這個(gè)問題,需要在每次產(chǎn)生隨機(jī)序列前,先指定不同的種子,這樣計(jì)算出來的隨機(jī)序列就不會(huì)完全相同了。以time函數(shù)值(即當(dāng)前時(shí)間)作為種子數(shù),因?yàn)閮纱握{(diào)用rand函數(shù)的時(shí)間通常是不同的,這樣就可以保證隨機(jī)性了。也可以使用srand函數(shù)來人為指定種子數(shù)分析以下兩個(gè)程序段,
      程序段1:
      //包含頭文件
      void main() {
      int count=0;
      for (int i=0;i<10;i++){
      srand((unsigned)time(NULL));
      count++;
      cout<<"No"<
      //包含頭文件
      void main() {
      int count=0;
      srand((unsigned)time(NULL));
      for (int i=0;i<10;i++){
      count++;
      cout<<"No"<
      No1=9694 No2=9694 No3=9694 No4=9694 No5=9694
      No6=9694 No7=9694 No8=9694 No9=9694 No10=9694
      程序段2的運(yùn)行結(jié)果為:
      No1=10351 No2=444 No3=11351 No4=3074 No5=21497
      No6=30426 No7=6246 No8=24614 No9=22089 No10=21498
      可以發(fā)現(xiàn),以上兩個(gè)程序段由于隨機(jī)數(shù)生成時(shí)選擇的種子的不同,運(yùn)行的結(jié)果也不一樣。rand()函數(shù)返回隨機(jī)數(shù)序列中的下一個(gè)數(shù)(實(shí)際上是一個(gè)偽隨機(jī)數(shù)序列,序列中的每一個(gè)數(shù)是由對其前面的數(shù)字進(jìn)行復(fù)雜變換得到的)。為了模仿真正的隨機(jī)性,首先要調(diào)用srand()函數(shù)給序列設(shè)置一個(gè)種子。為了更好地滿足隨機(jī)性,使用了時(shí)間函數(shù)time(),以便取到一個(gè)隨時(shí)間變化的值,使每次運(yùn)行rand()函數(shù)時(shí)從srand()函數(shù)所得到的種子值不相同。偽隨機(jī)數(shù)生成器將作為"種子"的數(shù)當(dāng)作初始整數(shù)傳給函數(shù)。這粒種子會(huì)使這個(gè)球(生成偽隨機(jī)數(shù))一直滾下去。
      程序段1中由于將srand()函數(shù)放在循環(huán)體內(nèi),而程序執(zhí)行的CPU時(shí)間較快,調(diào)用time函數(shù)獲取的時(shí)間精度卻較低(55ms),這樣循環(huán)體內(nèi)每次產(chǎn)生隨機(jī)數(shù)用到的種子數(shù)都是一樣的,因此產(chǎn)生的隨機(jī)數(shù)也是一樣的。而程序段2中第1次產(chǎn)生的隨機(jī)數(shù)要用到隨機(jī)種子,以后的每次產(chǎn)生隨機(jī)數(shù)都是利用遞推關(guān)系得到的。 基于MFC的隨機(jī)校驗(yàn)碼生成
      Web應(yīng)用程序中經(jīng)常要利用到隨機(jī)校驗(yàn)碼,校驗(yàn)碼的主要作用是防止黑客利用工具軟件在線破譯用戶登錄密碼,校驗(yàn)碼、用戶名、密碼三者配合組成了進(jìn)入Web應(yīng)用系統(tǒng)的鑰匙。在利用VC開發(fā)的基于客戶機(jī)/瀏覽器(Client/Server)模式的應(yīng)用軟件系統(tǒng)中,為了防止非法用戶入侵系統(tǒng),通常也要運(yùn)用隨機(jī)校驗(yàn)碼生成技術(shù)。

    偽隨機(jī)數(shù)的介紹BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    偽隨機(jī)數(shù)是用確定性的算法計(jì)算出來自[0.1]均勻分布的隨機(jī)數(shù)序列。并不真正的隨機(jī),但具有類似于隨機(jī)數(shù)的統(tǒng)計(jì)特征,如均勻性、獨(dú)立性等。在計(jì)算偽隨機(jī)數(shù)時(shí),若使用的初值不變,那么偽隨機(jī)數(shù)的數(shù)序也不變。偽隨機(jī)數(shù)可以用計(jì)算機(jī)大量生成,在模擬研究中為了提高模擬效率,一般采用偽隨機(jī)數(shù)代替真正的隨機(jī)數(shù)。模擬中使用的一般是循環(huán)周期極長并能通過隨機(jī)數(shù)檢驗(yàn)的偽隨機(jī)數(shù),以保證計(jì)算結(jié)果的隨機(jī)性。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    偽隨機(jī)數(shù)生成方法BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    1、直接法,根據(jù)分布函數(shù)的物理意義生成。缺點(diǎn)是僅適用于某些具有特殊分布的隨機(jī)數(shù),如二項(xiàng)式分布、泊松分布。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    2、逆轉(zhuǎn)法,假設(shè)U服從[0.1]區(qū)間上的均勻分布,令X=F-1(U),則X的累計(jì)分布函數(shù)(CDF)為F。該方法原理簡單、編程方便、適用性廣。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    3、接受拒絕法,假設(shè)希望生成的隨機(jī)數(shù)的概率密度函數(shù)為f,則首先找到一個(gè)PDF為g的隨機(jī)數(shù)發(fā)生器與常數(shù)c,使得f(x)≤cg(x),然后根據(jù)接收拒絕算法求解。由于算法平均運(yùn)算c次才能得到一個(gè)希望生成的隨機(jī)數(shù),因此c的取值必須盡可能小。顯然,該算法的缺點(diǎn)是較難確定g與c。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    因此,偽隨機(jī)數(shù)生成器一般采用逆轉(zhuǎn)法,其基礎(chǔ)是均勻分布,均勻分布PRNG的優(yōu)劣決定了整個(gè)隨機(jī)數(shù)體系的優(yōu)劣。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司

    以上就是關(guān)于綠色偽隨機(jī)數(shù)算法相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。BfZ創(chuàng)意嶺 - 安心托付、值得信賴的品牌設(shè)計(jì)、營銷策劃公司


    推薦閱讀:

    ai百曉生軟件破解(ai百曉生軟件破解版)

    閃剪數(shù)字人破解版(ai虛擬數(shù)字人免費(fèi)軟件)

    按鍵精靈手機(jī)VIP破解版(按鍵精靈手機(jī)vip破解版下載)

    申請解封抖音理由100字(申請解封抖音理由100字怎么寫)

    google大數(shù)據(jù)處理工具(google大數(shù)據(jù)分析工具)