Random-Number-Generator

你如何解釋來自 Dieharder 測試套件的 p 值來評估 RNG?

  • September 30, 2014
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
  rng_name    |rands/second|   Seed   |
stdin_input_raw|  3.91e+06  |3556676169|
#=============================================================================#
       test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
  diehard_birthdays|   0|       100|    1000|0.04228375|  PASSED
     diehard_operm5|   0|   1000000|    1000|0.19715383|  PASSED
 diehard_rank_32x32|   0|     40000|    1000|0.46351097|  PASSED
   diehard_rank_6x8|   0|    100000|    1000|0.95836167|  PASSED
  diehard_bitstream|   0|   2097152|    1000|0.48181370|  PASSED
       diehard_opso|   0|   2097152|    1000|0.30244550|  PASSED
       diehard_oqso|   0|   2097152|    1000|0.94656094|  PASSED
        diehard_dna|   0|   2097152|    1000|0.02404047|  PASSED
diehard_count_1s_str|   0|    256000|    1000|0.45401565|  PASSED
diehard_count_1s_byt|   0|    256000|    1000|0.48456168|  PASSED

將隨機數流提供給 Dieharder 測試套件會呼叫測試列表。每個測試都返回一個 p 值。據我了解,p 值告訴您流真的只是隨機雜訊(或不是雜訊)的機會。但是我讀到一個好的 RNG 會有一系列遵循均勻分佈的 p 值。0 和 1 之間的值應該以大約相等的機率發生。為什麼會這樣?為什麼這裡需要均勻分佈,這是什麼意思,以及如何衡量分佈的“均勻性”?

我讀過一個好的 RNG 將具有一系列遵循均勻分佈的 p 值。0 和 1 之間的值應該以大約相等的機率發生。為什麼會這樣?

它直接來自 p 值的定義。p 值表示如果源是真正隨機的,您至少會得到扭曲結果的機率。

所以你期望一個p值 $ \le 0.05 $ 5%的時間。您期望 p 值 $ \le 0.10 $ 10% 的時間。因此,您期望區間中有一個 p 值 $ [0.05, 0.10] $ 5%的時間。對於零到一之間的任何其他間隔也是如此。

當然,均勻分佈不會在每個範圍內產生相同數量的結果,因此您總是會得到 p 值的隨機偏斜分佈。在實踐中,您可能只是依靠頑固分子來告訴您您已經通過了測試……請記住,這並不能證明您擁有一個好的(加密)隨機數生成器。

引用自:https://crypto.stackexchange.com/questions/19393