日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论

發布時間:2025/4/14 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UA STAT675 統計計算I 隨機數生成1 隨機數生成器的一般理論

    • RNG的抽象表示
    • RNG的質量指標
    • RNG的統計檢測

在統計計算中,從某個分布中進行采樣通常分為兩個步驟:

  • 生成隨機數z1,z2,?,zn~iidU(0,1)z_1,z_2,\cdots,z_n \sim_{iid} U(0,1)z1?,z2?,?,zn?iid?U(0,1)
  • 基于z1,?,znz_1,\cdots,z_nz1?,?,zn?,根據某些變換或者某些操作(比如rejection\reweight等)得到服從該分布的隨機數
  • 實現第一步的算法通常被稱為(偽)隨機數生成器,簡稱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:SSUUU是輸出集,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:SU是輸出函數,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?l0?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?ilsi+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一定具備優秀算法的品質:

  • Efficient:時間復雜度與空間復雜度都低
  • Repeatable:可以重復產生某一次的輸出
  • Portable:可移植,在不同設備上都能有效工作
  • 然而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}?iN,tN(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應該滿足的條件:

  • Efficient:時間復雜度與空間復雜度都低
  • Repeatable:可以重復產生某一次的輸出
  • Portable:可移植,在不同設備上都能有效工作
  • Ψt={(u0,?,ut?1):ui=g(si),s0∈S,si=f(si?1)}≈(0,1)t\Psi_t = \{(u_0,\cdots,u_{t-1}):u_i=g(s_i),s_0 \in S,s_i = f(s_{i-1})\} \approx (0,1)^tΨt?={(u0?,?,ut?1?):ui?=g(si?),s0?S,si?=f(si?1?)}(0,1)t
  • 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?,?)XR,則TTT可以作為一個檢驗統計量,L’Ecuyer證明了不存在能通過所有可能的假設檢驗的RNG,所以只要一個RNG能通過簡單的、常用的檢驗(比如卡方檢驗等),我們就稱它為一個好的RNG。

    總結

    以上是生活随笔為你收集整理的UA STAT675 统计计算I 随机数生成1 随机数生成器的一般理论的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。