說明 Excel 2007 與 Excel 2003 中的 RAND 函數

文章翻譯 文章翻譯
文章編號: 828795 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

本文將告訴您,在 Microsoft Office Excel 2007 與 Microsoft Office Excel 2003 中亂數產生器函數所使用的改良演算法。

其他相關資訊

舊版 Excel 中的 RAND 函數使用虛擬亂數產生演算法,但這種演算法在標準隨機測試中的效能不佳。雖然這可能只會影響大量呼叫 RAND 的使用者 (例如呼叫上百萬次),其他使用者幾乎都沒有這個顧慮,但是此處所提及的虛擬亂數產生演算法原先是為 Excel 2003 而實作,現在已通過相同系列的標準測試。

此測試系列名為 Diehard (請參閱附註 1)。Excel 2003 中實作的這個演算法是由 B.A. Wichman 與 I.D. Hill 所開發 (請參閱附註 2 及附註 3)。美國保健福利部 (健康及民眾服務部) (U.S. Department of Health and Human Services) 的督察長室 (Office of the Inspector) 所提供的 RAT-STATS 軟體套件也是使用此亂數產生器。Rotz 等人 (請參閱附註 4) 已證實它已通過 DIEHARD 測試,以及前身為國家標準局的國家標準及技術機構 (National Institute of Standards and Technology,NIST) 所開發的其他測試。

附註

  • 這些測試是由佛羅里達州立大學統計學系的 George Marsaglia 教授所開發,可以從下列網站取得:
    http://www.csis.hku.hk/~diehard
  • Wichman, B.A. and I.D. Hill, Algorithm AS 183:An Efficient and Portable Pseudo-Random Number Generator, Applied Statistics, 31, 188-190, 1982.
  • Wichman, B.A. and I.D. Hill, Building a Random-Number Generator, BYTE, pp.127-128, March 1987.
  • Rotz, W. and E. Falk, D. Wood, and J. Mulrow, A Comparison of Random Number Generators Used in Business, presented at Joint Statistical Meetings, Atlanta, GA, 2001.
基本概念是取自 [0,1] 上的三個亂數再加總,總和的分數部分本身就是 [0,1] 的亂數。Wichman 與 Hill 原文中所列 Fortan 程式碼的關鍵陳述式如下:
C	IX, IY, IZ SHOULD BE SET TO INTEGER VALUES BETWEEN 1 AND 30000 BEFORE FIRST ENTRY

IX = MOD(171 * IX, 30269)

IY = MOD(172 * IY, 30307)

IZ = MOD(170 * IZ, 30323)

RANDOM = AMOD(FLOAT(IX) / 30269.0 + FLOAT(IY) / 30307.0 + FLOAT(IZ) / 30323.0, 1.0)
因此 IX、IY、IZ 會分別產生介於 0 到 30268、0 到 30306 以及 0 到 30322 之間的整數。最後一個陳述式會相加這些整數來實作前面所述的簡單原則:如果取 [0,1] 上的三個亂數再加總,總和的分數部分本身就是 [0,1] 的亂數。

由於 RAND 會產生虛擬亂數,因此,如果產生的序列夠長,此序列最終會重複出現。採用與 Wichman-Hill 相同的做法,將亂數相加,如此,在重複模式開始之前,產生的數字一定會超過 10^13。舊版 RAND 在好幾個 Diehard 測試中的結果都不甚滿意,因為數字重複之前的循環實在是太短了。

舊版 Excel 中的結果

對於不需要很長的亂數序列 (如百萬個號碼) 的使用者而言,實際使用舊版 Excel 中的 RAND 函數並沒有什麼問題。但由於它未通過多個標準隨機測試,因此在需要很長的亂數序列的情況下,將會出現效能問題。

Excel 2003 中的結果

此版本已實作簡單且有效的演算法。這個新的產生器通過所有標準隨機測試。

結論

需要很長的亂數序列的 RAND 進階使用者使用 Excel 2003 的新產生器會更得心應手。至於其他使用者,使用舊版 Excel 的 RAND 就已經綽綽有餘了。

?考

如需有關 RAND 中已記載之問題的詳細資訊,請按一下下面的文件編號,以檢視「Microsoft 知識庫」中的文件:
834520 The RAND function returns negative numbers in Excel 2003

屬性

文章編號: 828795 - 上次校閱: 2007年3月16日 - 版次: 5.0
這篇文章中的資訊適用於:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
關鍵字:?
kbfuncstat kbfunctions kbinfo KB828795
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com