數學愛好者發現了關於數字998,001的奇妙事情,將1除以998,001你將會看到一個相當奇怪的答案。
如果將1除以998,001,答案中的小數點後面的數字會出現幾乎每三位數變化一次的規律。具體答案如下:0.000001002003004005006 ...依此類推。但是在這個奇怪的系列中,會跳過一個三位數的數字。這個等式中缺少的三位數字是998,見下圖中底部紅色下劃線標註,數字直接從997跳到999。數字998,001實際上是那些少數存在的魔幻數學數字家庭中的一員:998001恰好是999的平方。
如果你將1除以9,801(99的平方),你會得到一個類似的答案:所有的兩位數字都會出現,除了98。如果你將1除以99,980,001(9,999的平方),你的答案中將會出現9,998之外的所有四位數字。類似地,如果將1除以81(9的平方),結果將為.012345679012345679 ...,除8之外的所有單位數字都會出現,它們會繼續這個模式到無窮。
手動計算這些方程可能需要很長時間。幸運的是,您可以利用這些數字如何執行的新知識來建立任何您想要的迴圈小數模式。訣竅是定義每個數字中你想要的數字的位數,然後找到一個數字,它是多個重複的9數字的平方,然後用1去除以這個數字。這意味著,如果你想讓0.012345679作為答案迴圈出現,換句話說,讓個位數數字連續上升,你可以用9的平方81,然後再1/81。這個分數,用小數表示,就是前面描述的那個單位數重複序列。
如果你想建立一個無窮級數,它所遵循得模式為1 + 2X+ 3(X^2 )+ 4(X^3),並且X小於1,整個級數將簡化為1/(1-X)的平方。您也可以使用這個系列來建立迴圈小數。例如,如果您將X定義為1/10,那麼整個系列將生成100/81的相似結果,這將建立與上面描述類似的迴圈系列。
這些數字有用嗎?乍一看,似乎建立方程式產生重複小數是一個完全無關緊要的數學技巧。但是能夠為重複小數建立方程實際上對於很多實際任務非常有用。密碼學家和網路安全專業人員可以採用重複小數並將其表示為二進位制數,以便測試隨機數生成器。另一種是偽隨機數生成器,它通常依賴於秘密演算法和實際上隨機但不改變的種子值。
當你發現大多數隨機數發生器都不是隨機發生時,可能現在無法讓你驚訝。計算機無法真正憑空選擇數字,因此它們有兩種選擇:一種是依靠外部資料生成一個真正隨機的數字,然後可以將其轉換為無法猜測或被駭客攻擊的加密金鑰。另一種是偽隨機數生成器,它通常依賴於秘密演算法和實際上隨機但不改變的種子值。
如果計算機系統加密其資訊根據並非十分隨機的生成器,完全依賴於這些內部機制生成偽隨機數,那麼就可以使用與上述完全相同的表示為二進位制程式碼的重複小數來測試該系統的安全性