我是隨機算法的新手,並通過閱讀書籍自己學習。我正在閱讀一本由Mark Allen Wessis提供的數據結構和算法分析書 。關於隨機數字序列的產生
假設我們只需要翻轉一枚硬幣;因此,我們必須隨機生成0或1個 。一種方法是檢查系統時鐘。時鐘 可能將時間記錄爲一個整數,該整數計算自1970年1月1日以來(至少在Unix系統上)的秒數 。然後我們可以使用最低位 。問題是,如果需要隨機數字的序列 ,那麼這不起作用。一秒很長時間,並且在程序運行時時鐘 可能根本不會改變。即使時間 是以微秒爲單位記錄的,如果程序是由 本身運行的,那麼將生成的數字序列將遠離隨機的 ,因爲對發生器的調用之間的時間將是 ,程序調用。那麼,我們看到 真正需要的是一系列隨機數。這些號碼 應該顯得獨立。如果硬幣翻轉並出現頭部,則下一個硬幣翻轉應該仍然可能出現頭部或尾部。
以下是對上述文本片段的疑問。
在上面的文字片段「爲秒,我們可以使用最低位計數」,筆者提的是,這是行不通一秒鐘的時間很長, 和時鐘可能不會改變」,我的問題是,爲什麼一秒鐘是很長的時間和時鐘會每秒改變,並在什麼情況下作者提到 時鐘不變?請求幫助瞭解簡單的例子。
作者如何提及即使是微秒,我們也沒有得到隨機數字序列?
謝謝!
這兩條評論都意味着計算機在時鐘方面的運行速度非常快,計算機第二個時間很長。在程序所做的調用之間,時鐘可能不會改變。 – hackartist 2011-12-15 08:23:02