當前位置:首頁 » 操作系統 » 隨機數生成演算法

隨機數生成演算法

發布時間: 2022-01-22 06:02:51

『壹』 求一個隨機數生成演算法,時間復雜度低。當隨機選了一個數,之後在其餘數中隨機抽,每次也是這樣,即是不可

用一個list存放所有你需要的數,然後每次抽取隨機一個大小在list長度的值,然後list取出該index的值,然後刪除,依次循環。這個簡單也不會造成取相同值的問題。

『貳』 電腦隨機數產生的計算具體方法

實現的方法和詳細的操作步驟如下:

1、第一步,為main函數指定一個函數,如下圖所示,然後進入下一步。

『叄』 如何快速生成隨機數 RSA演算法

可以採用32bit RSA演算法
設A從2~(N-1)
C=(A EXP D) mod N
滿足如下條件:
D是素數,N是兩個素數(P,Q)之積,
(D * E) mod ((P-1) * (Q-1))=1
因為:若
C=(A EXP D)mod N
有:
A=(C EXP E) mod N
所以,C與A 一一對應。
所以,對於A=2~(N-1),有不重復,無遺漏的偽隨機碼C。
凡是稍微扯上一點數學,尤其是高等數學的問題,我等泛泛之輩看起來就有點費勁,這里雖然文字不長,但是還得慢慢來看。
這裡面RSA演算法是密碼學三大演算法之一(RSA、MD5、DES),是一種不對稱密碼演算法。說如果滿足條件:D是素數,N是兩個素數(P,Q)之積,(D * E) mod ((P-1) * (Q-1))=1,那麼存在C與A(范圍從2到N-1)一一對應,且C=(A EXP D)mod N。A是一個有順序的數,C就是一個看似無規律的偽隨機數。Mod運算表示求模,例如7Mod3=1。意思是7除以3餘1。類似地8Mod3=2,9Mod3=0。EXP表示前面數的後面數次方,AEXPD表示A的D次方。這兩個運算清楚了,其它的也就沒什麼困難的了,*是乘法的意思,大多數理科生都清

『肆』 如何能演算法生成真隨機數

K1——相同序列的概率非常低

K2——符合統計學的平均性,比如所有數字出現概率應該相同,卡方檢驗應該能通過,超長遊程長度概略應該非常小,自相關應該只有一個尖峰,任何長度的同一數字之後別的數字出現概率應該仍然是相等的等等
K3——不應該能夠從一段序列猜測出隨機數發生器的工作狀態或者下一個隨機數
K4——不應該從隨機數發生器的狀態能猜測出隨機數發生器以前的工作狀態

『伍』 256bit隨機數生成演算法

string Get256BitRandom()
{
STRING result = \"\";
for(int i=0;i<8;i++)
{
result += (string)RANDOM(int);
}
return result;
}

『陸』 隨機數的計算公式是什麼

為追求真正的隨機序列,人們曾採用很多種原始的物理方法用於生成一定范圍內滿足精度(位數)的均勻分布序列,其缺點在於:速度慢、效率低、需佔用大量存儲空間且不可重現等。為滿足計算機模擬研究的需求,人們轉而研究用演算法生成模擬各種概率分布的偽隨機序列。偽隨機數是指用數學遞推公式所產生的隨機數。從實用的角度看,獲取這種數的最簡單和最自然的方法是利用計算機語言的函數庫提供的隨機數發生器。典型情況下,它會輸出一個均勻分布在0和1區間內的偽隨機變數的值。其中應用的最為廣泛、研究最徹底的一個演算法即線性同餘法。
線性同餘法LCG(Linear Congruence Generator)
選取足夠大的正整數M和任意自然數n0,a,b,由遞推公式:
ni+1=(af(ni)+b)mod M i=0,1,…,M-1
生成的數值序列稱為是同餘序列。當函數f(n)為線性函數時,即得到線性同餘序列:
ni+1=(a*ni+b)mod M i=0,1,…,M-1
以下是線性同餘法生成偽隨機數的偽代碼:
Random(n,m,seed,a,b)
{
r0 = seed;
for (i = 1;i<=n;i++)
ri = (a*ri-1 + b) mod m
}
其中種子參數seed可以任意選擇,常常將它設為計算機當前的日期或者時間;m是一個較大數,可以把它取為2w,w是計算機的字長;a可以是0.01w和0.99w之間的任何整數。
應用遞推公式產生均勻分布隨機數時,式中參數n0,a,b,M的選取十分重要。
例如,選取M=10,a=b =n0=7,生成的隨機序列為{6,9,0,7,6,9,……},周期為4。
取M=16,a=5,b =3,n0=7,生成的隨機序列為{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,生成的隨機序列為{6,7,4,5,2,3,0,1,6,7……},周期為8。

『柒』 java怎麼進行隨機數生成演算法

要產生隨機數,可以使用Java api中java.lang包中的Math類.Math類以靜態方法的方式提供常用的數學方法,
其中Math.random()方法是一個可以產生[0.0,1.0]區間內的一個雙精度浮點數的方法
如:
產生一個100以內的整數:int x=(int)(Math.random()*100);
又如:
產生一個1-50之間的隨機數:int x=1+(int)(Math.random()*50)
也可以使用通用創建對象來獲取:
Random random = new Random();
random.nextInt(x);
產生一個0到x-1的正數,如果想產生浮點數有Random類的nextFloat方法,總之nextXXX方法是用來產生隨機數的。

『捌』 隨機數生成方案(計算方法)

諾依曼的平方數取中法。
先通過求關鍵碼的平方值,從而擴大相近數的差別,然後根據表長度取中間的幾位數(往往取二進制的比特位)

『玖』 隨機數演算法是什麼

在計算機中並沒有一個真正的隨機數發生器,但是可以做到使產生的數字重復率很低,這樣看起來好象是真正的隨機數,實現這一功能的程序叫偽隨機數發生器。有關如何產生隨機數的理論有許多如果要詳細地討論,需要厚厚的一本書的篇幅。不管用什麼方法實現隨機數發生器,都必須給它提供一個名為「種子」的初始值。而且這個值最好是隨機的,或者至少這個值是偽隨機的。「種子」的值通常是用快速計數寄存器或移位寄存器來生成的。下面講一講在C語言里所提供的隨機數發生器的用法。現在的C編譯器都提供了一個基於ANSI標準的偽隨機數發生器函數,用來生成隨機數。它們就是rand()和srand()函數。這二個函數的工作過程如下:」)首先給srand()提供一個種子,它是一個unsignedint類型,其取值范圍從0~65535;2)然後調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)3)根據需要多次調用rand(),從而不間斷地得到新的隨機數;4)無論什麼時候,都可以給srand()提供一個新的種子,從而進一步「隨機化」rand()的輸出結果。這個過程看起來很簡單,問題是如果你每次調用srand()時都提供相同的種子值,那麼,你將會得到相同的隨機數序列,這時看到的現象是沒有隨機數,而每一次的數都是一樣的了。例如,在以17為種子值調用srand()之後,在首次調用rand()時,得到隨機數94。在第二次和第三次調用rand()時將分別得到26602和30017,這些數看上去是很隨機的(盡管這只是一個很小的數據點集合),但是,在你再次以17為種子值調用srand()後,在對於rand()的前三次調用中,所得的返回值仍然是在對94,26602,30017,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此只有再次給srand()提供一個隨機的種子值,才能再次得到一個隨機數。下面的例子用一種簡單而有效的方法來產生一個相當隨機的「種子」值----當天的時間值:g#椋睿悖歟醯洌澹Γ歟簦唬螅簦洌椋錚瑁Γ紓簦弧。#椋睿悖歟醯洌澹Γ歟簦唬螅簦洌歟椋猓瑁Γ紓簦弧。#椋睿悖歟醯洌澹Γ歟簦唬螅螅Γ#矗罰唬簦穡澹螅瑁Γ紓簦弧。#椋睿悖歟醯洌澹Γ歟簦唬螅螅Γ#矗罰唬簦椋恚澹猓瑁Γ紓簦弧。觶錚椋洹。恚幔椋睿ǎ觶錚椋洌。。椋睿簟。椋弧。醯睿螅椋紓睿澹洹。椋睿簟。螅澹澹洌鄭幔歟弧。螅簦潁醯悖簟。簦椋恚澹狻。簦椋恚澹攏醯媯弧。媯簦椋恚澹ǎΓ幔恚穡唬簦椋恚澹攏醯媯弧。螅澹澹洌鄭幔歟劍ǎǎǎǎ醯睿螅椋紓睿澹洹。椋睿簦簦椋恚澹攏醯媯簦椋恚澹Γ幔恚穡唬埃疲疲疲疲。ǎ醯睿螅椋紓睿澹洹。椋睿簦簦椋恚澹攏醯媯恚椋歟歟椋簦恚蕖。ǎ醯睿螅椋紓睿澹洹。椋睿簦簦椋恚澹攏醯媯恚椋歟歟椋簦恚弧。螅潁幔睿洌ǎǎ醯睿螅椋紓睿澹洹。椋睿簦螅澹澹洌鄭幔歟弧。媯錚潁ǎ椋劍埃唬椋Γ歟簦唬保埃唬椋。穡潁椋睿簦媯ǎΓ瘢醯錚簦唬ィ叮洌Γ#梗玻唬睿Γ瘢醯錚簦籦egjrand());}上面的程序先是調用_ftime()來檢查當前時間yc並把它的值存入結構成員timeBuf.time中wae當前時間的值從1970年1月1日開始以秒計算aeh在調用了_ftime()之後在結構timeBuf的成員millitm中還存入了當前那一秒已經度過的毫秒數,但在DOS中這個數字實際上是以百分之一秒來計算的。然後,把毫秒數和秒數相加,再和毫秒數進行異或運算。當然也可以對這兩個結構成員進行更多的計算,以控制se......餘下全文>>

『拾』 真的有能產生完全隨機數的演算法嗎

計算機本來就沒辦法實現真正的隨機,它本來就是按邏輯來運行的,產生的所謂隨機數全部都是偽隨機,最多隻能做到范圍足夠大,產生規律足夠復雜,感覺像是隨機而已。

熱點內容
python3默認安裝路徑 發布:2024-09-19 08:50:22 瀏覽:514
環衛視頻拍攝腳本 發布:2024-09-19 08:35:44 瀏覽:416
sqlserveronlinux 發布:2024-09-19 08:16:54 瀏覽:255
編程常數 發布:2024-09-19 08:06:36 瀏覽:951
甘肅高性能邊緣計算伺服器雲空間 發布:2024-09-19 08:06:26 瀏覽:161
win7家庭版ftp 發布:2024-09-19 07:59:06 瀏覽:716
資料庫的優化都有哪些方法 發布:2024-09-19 07:44:43 瀏覽:268
知乎華為編譯器有用嗎 發布:2024-09-19 07:32:20 瀏覽:617
訪問虛擬機磁碟 發布:2024-09-19 07:28:13 瀏覽:668
原地工作演算法 發布:2024-09-19 07:28:07 瀏覽:423