线性同余法求伪随机数序列
利用線性同余法求隨機數,也可稱作利用線性同余法求偽隨機序列.
線性同余法是一種求隨機數的方法,它所求得得隨機數的序列是成周期性,同時它是根據公式計算求得得隨機數并非是由硬件產生的隨機數所以被稱作偽隨機序列.隨機序列的循環周期的大小取決于相關參數的選取,如果選取參數得當,可以將此循環周期拉得很長.
以下算法是輸入相關參數后,計算并產生隨機數,然后輸出循環周期的長度.
線性同余法公式:
a,b,m是隨機數產生器設定的常數.
mod:表示對m取余,即%m.
x(0)被稱為種子,x(n)與x(n-1)是隨著運算進行是變化的
關于a,b,m的取值,決定著隨機序列周期的長短,滿足以下條件后,可以讓序列周期長度達到m,各個隨機數不重合,且這些隨機數序列包含了0到m的所有數.
1. b和m互質,即公約數只有1
2. M的所有質因子的積能夠整除a-1,如若m是3的倍數,a-1也是3的倍數
3. a,b,x0 都要比M小
4. a,b是正整數
例如:a=6 x0=4 b=7 m=25
? ?a=5 x0=6 b=15 m=16
注意:一般應用中為了保證隨機數序列盡量不重復,一般選取計算時候的時鐘作為種子來開始計算
?
代碼實現:
輸入參數:a,x0,b,m
輸出一個完整序列中的所有隨機數,并輸出此隨機數序列的長度.
如:輸入:
a=5
x0=6
b=15
m=16
輸出:
13 0 15 10 1 4 3 14 5 8 7 2 9 12 11 6?
length of the sequence is 16
代碼:
?
總結
以上是生活随笔為你收集整理的线性同余法求伪随机数序列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 信息论与编码2 BCH码的构造
- 下一篇: 学习日记:scipy库的版本差异