Randomness
將熵從流收集到文件
我有一個潛在的無限數據流,這些數據源自一些可能暴露隨機行為的物理現象(由於量子效應、熱雜訊、混沌動力系統中的蝴蝶效應等)。流可能帶有一定量的熵(真正的隨機性),但它可能在整個流中分佈不均勻,並且其密度是未知的。
我的儲存空間有限(比如 1GB)。我需要一個可以從流中收集盡可能多的熵到提供的儲存的過程,並在需要時(在合理的時間內)生成包含收集到的熵的單個文件。最好在不減少其包含的熵的情況下使生成的文件盡可能小。
我怎樣才能實施這樣的程序?
將文件分成大小幾乎相等的塊,然後讓 $ B $ 表示最大塊大小(以位為單位)。 $ : $ 選擇一個隨機提取器,它的輸出足夠長,可以
從塊中採樣並且仍然有 $ B $ 剩下的輸出位。
對於每個
$$ extractor’s source’s size $$來自流的位,將提取器應用於這些位,
使用輸出對塊進行採樣,如前所述,讓 $ s $ 是該塊中的位數,將該塊
設置為等於其舊值加上最左邊的值 $ s $ 剩餘提取器輸出的位
(均解釋為無符號整數) mod 2 $ ^s $ ,然後如果任何提取器的
輸出仍未使用,則繼續,就好像這些是流中的下一個位一樣。