UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论
UA STAT675 統計計算I 隨機數生成1 隨機數生成器的一般理論
- RNG的抽象表示
- RNG的質量指標
- RNG的統計檢測
在統計計算中,從某個分布中進行采樣通常分為兩個步驟:
實現第一步的算法通常被稱為(偽)隨機數生成器,簡稱RNG (pseudo random number generator),毫不夸張地說,RNG就是統計計算的基礎。按照RNG的采樣方式不同,可以把它分為物理RNG與算法RNG;物理RNG就是基于一些具有"random"或者“chaotic”的物理現象得到隨機數的生成器,但大家普遍認為物理RNG有下面一些缺點:需要安裝一些實驗設備,所以比較貴,生成隨機數的速率非常慢,并且不能重復生成某一組隨機數序列等,因此現在廣為使用的是算法RNG。
RNG的抽象表示
L’Ecuyer (1990, 1994, 1996, 1997, 1998, 1999, 2001)對算法RNG進行非常全面的研究,我們可以以他提出的RNG的抽象表示作為基礎。假設
RNG=(S,μ,f,U,g)RNG=(S,\mu,f,U,g)RNG=(S,μ,f,U,g)
這里SSS是狀態集,fff是狀態轉移函數,f:S→Sf:S \to Sf:S→S,UUU是輸出集,U(0,1)U(0,1)U(0,1)的RNG滿足U=(0,1)U=(0,1)U=(0,1),g:S→Ug:S \to Ug:S→U是輸出函數,f,gf,gf,g都是確定性的函數,不產生隨機性,μ\muμ是SSS的概率分布,是用來選擇初始狀態(initial state或者seed)的,記選擇的seed為s0s_0s0?,則RNG的狀態轉移序列滿足:
st=f(st?1)s_t = f(s_{t-1})st?=f(st?1?)
從而輸出的隨機數為{ut:ut=g(ut)}\{u_t:u_t = g(u_t)\}{ut?:ut?=g(ut?)}。
因為SSS是有限集,所以?l≥0\forall l \ge 0?l≥0, ?j>0\exists j >0?j>0,使得sl=sl+js_l=s_{l+j}sl?=sl+j?,因為f,gf,gf,g不帶來隨機性,所以?i≥l\forall i \ge l?i≥l,si+j=si,ui+j=uis_{i+j}=s_i,u_{i+j}=u_isi+j?=si?,ui+j?=ui?,也就是說在這種抽象模型下,RNG并不是完全隨機的,當我們生成足夠多的隨機數之后,一定會出現重復的序列,這也是為什么算法RNG產生的是偽隨機數的原因。我們稱使得序列重復的最小的jjj為RNG的周期,記為ρ\rhoρ,顯然ρ≤∣S∣\rho \le |S|ρ≤∣S∣,如果狀態在計算中用kkk bits表示,那么∣S∣=2k|S|=2^{k}∣S∣=2k,優秀的RNG的周期一定是接近甚至等于2k2^k2k的。
RNG的質量指標
在設計RNG的時候,我們總是需要考慮什么樣的RNG才是好的RNG。先從算法的角度考慮,既然RNG也是一種算法,那么優秀的RNG一定具備優秀算法的品質:
然而RNG比一般的算法更特殊一點,我們清晰地知道預期地輸出是什么樣子的,所以我們必須要加入一些其他的標準。
我們設計RNG的目標是得到u0,u1,u2,?~iidU(0,1)u_0,u_1,u_2,\cdots \sim_{iid} U(0,1)u0?,u1?,u2?,?~iid?U(0,1)。根據Kolmogorov extension theorem,u0,u1,u2,?~iidU(0,1)u_0,u_1,u_2,\cdots \sim_{iid} U(0,1)u0?,u1?,u2?,?~iid?U(0,1)等價于?i∈N,t∈N\forall i \in \mathbb{N},t \in \mathbb{N}?i∈N,t∈N,(ui,?,ui+t?1)~U((0,1)t)(u_i,\cdots,u_{i+t-1}) \sim U((0,1)^t)(ui?,?,ui+t?1?)~U((0,1)t),可以驗證算法RNG不一定滿足這個條件:
假設我們從SSS中等可能選出一個seed,定義
Ψt={(u0,?,ut?1):ui=g(si),s0∈S,si=f(si?1)}\Psi_t = \{(u_0,\cdots,u_{t-1}):u_i=g(s_i),s_0 \in S,s_i = f(s_{i-1})\}Ψt?={(u0?,?,ut?1?):ui?=g(si?),s0?∈S,si?=f(si?1?)}
則u0,t=(u0,?,ut?1)~U(Ψt)u_{0,t}=(u_0,\cdots,u_{t-1}) \sim U(\Psi_t)u0,t?=(u0?,?,ut?1?)~U(Ψt?),根據周期性,ui,t=(ui,?,ui+t?1)~U(Ψt)u_{i,t}=(u_i,\cdots,u_{i+t-1})\sim U(\Psi_t)ui,t?=(ui?,?,ui+t?1?)~U(Ψt?)。這是算法RNG生成的隨機數服從的真實分布,與理論相比,要讓這個RNG成為一個優秀的RNG,我們希望
Ψt≈(0,1)t\Psi_t \approx (0,1)^tΨt?≈(0,1)t
綜上,我們可以得到優秀的RNG應該滿足的條件:
RNG的統計檢測
但我們依據上面四條質量指標設計出一個RNG之后,我們還需要對這個RNG進行統計檢測。因為四條質量指標都是確定性的指標,不涉及隨機性,但RNG的目標是生成iid的U(0,1)U(0,1)U(0,1)樣本,所以我們需要用假設檢驗的思路對RNG進行統計檢測。假設u0,u1,?u_0,u_1,\cdotsu0?,u1?,?是RNG生成的樣本,原假設為
H0:u0,u1,u2,?~iidU(0,1)H_0:u_0,u_1,u_2,\cdots \sim_{iid} U(0,1)H0?:u0?,u1?,u2?,?~iid?U(0,1)
假設T:(u0,u1,u2,?)→X∈RT:(u_0,u_1,u_2,\cdots) \to X \in \mathbb{R}T:(u0?,u1?,u2?,?)→X∈R,則TTT可以作為一個檢驗統計量,L’Ecuyer證明了不存在能通過所有可能的假設檢驗的RNG,所以只要一個RNG能通過簡單的、常用的檢驗(比如卡方檢驗等),我們就稱它為一個好的RNG。
總結
以上是生活随笔為你收集整理的UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UA PHYS515 电磁理论I 麦克斯
- 下一篇: UA PHYS515 电磁理论I 麦克斯