你大概聽過「隨機位元」這個說法,但嚴格來說,世上沒有「一串隨機位元」這種東西。真正隨機的是產生這串位元的演算法或過程;因此當我們說「隨機位元」時,實際上指的是「隨機產生的位元」。
我們的直覺會騙人#
隨機的位元看起來像什麼?對多數人而言,8 位元字串 11010110 比 00000000 更隨機——儘管兩者被產生出來的機率完全相同(都是 1/256)。
11010110 之所以看起來更隨機,是因為它帶有隨機產生之值的典型特徵:沒有明顯的樣式。
當我們看到 11010110,大腦會登錄到它的 0(三個)與 1(五個)數量差不多,就像另外 55 個 8 位元字串一樣(11111000、11110100、11110010 等等);但「八個 0」這個樣式只有一個 8 位元字串符合。因為「三個 0 五個 1」比「八個 0」更容易出現,我們就把 11010110 判定為隨機、把 00000000 判定為不隨機。
於是:
- 如果一支程式產生
11010110,你可能會以為它是隨機的——即使它其實不是。 - 反過來,如果一支隨機化的程式產生
00000000,你大概會懷疑它不隨機。
兩種常見的判斷錯誤#
這個例子點出人們在辨識隨機性時常犯的兩類錯誤:
- 把不隨機誤認為隨機:僅僅因為某個物件看起來隨機,就認為它是隨機產生的。
- 把隨機誤認為不隨機:認為偶然出現的樣式,背後一定有巧合以外的原因。
「看起來隨機」與「真的隨機」之間的區別至關重要。
在密碼學中,不隨機往往就是不安全的同義詞。