你大概聽過「隨機位元」這個說法,但嚴格來說,世上沒有「一串隨機位元」這種東西。真正隨機的是產生這串位元的演算法或過程;因此當我們說「隨機位元」時,實際上指的是「隨機產生的位元」。

我們的直覺會騙人#

隨機的位元看起來像什麼?對多數人而言,8 位元字串 1101011000000000 更隨機——儘管兩者被產生出來的機率完全相同(都是 1/256)。

11010110 之所以看起來更隨機,是因為它帶有隨機產生之值的典型特徵:沒有明顯的樣式

當我們看到 11010110,大腦會登錄到它的 0(三個)與 1(五個)數量差不多,就像另外 55 個 8 位元字串一樣(111110001111010011110010 等等);但「八個 0」這個樣式只有一個 8 位元字串符合。因為「三個 0 五個 1」比「八個 0」更容易出現,我們就把 11010110 判定為隨機、把 00000000 判定為不隨機。

於是:

  • 如果一支程式產生 11010110,你可能會以為它是隨機的——即使它其實不是。
  • 反過來,如果一支隨機化的程式產生 00000000,你大概會懷疑它不隨機。

兩種常見的判斷錯誤#

這個例子點出人們在辨識隨機性時常犯的兩類錯誤:

  • 把不隨機誤認為隨機:僅僅因為某個物件看起來隨機,就認為它是隨機產生的。
  • 把隨機誤認為不隨機:認為偶然出現的樣式,背後一定有巧合以外的原因。

「看起來隨機」與「真的隨機」之間的區別至關重要。

在密碼學中,不隨機往往就是不安全的同義詞