Opis funkcji LOS w programach Excel 2007 i Excel 2003

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 828795 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Streszczenie

W tym artykule opisano zmodyfikowany algorytm używany w funkcji generatora liczb losowych RAND w programach Microsoft Office Excel 2007 i Microsoft Office Excel 2003.

Więcej informacji

Funkcja RAND w starszych wersjach programu Excel używała algorytmu generowania liczb pseudolosowych, który nie uzyskał wymaganych wyników podczas standardowych testów losowości. Może to wpłynąć tylko na tych użytkowników, którzy muszą wykonywać znaczną liczbę (na przykład milion lub więcej) wywołań funkcji RAND, i nie będzie problemem w przypadku większości użytkowników, jednak opisany w tym artykule algorytm generowania liczb pseudolosowych został po raz pierwszy wdrożony w programie Excel 2003. Uzyskuje on pozytywne wyniki w tym samym zestawie standardowych testów.

Ten zestaw testów jest zwany Diehard (zob. uwaga 1). Algorytm wdrożony w programie Excel 2003 został opracowany przez B.A. Wichmana i I.D. Hilla (zob. uwaga 2 i uwaga 3). Ten generator liczb losowych jest również używany w pakiecie oprogramowania RAT-STATS dostarczanym przez Biuro Inspektora Generalnego (Office of the Inspector General) Ministerstwa Zdrowia USA. Zgodnie z raportami Rotz et al (zob. uwaga 4) uzyskuje on pozytywne wyniki testów DIEHARD i dodatkowych testów opracowanych przez Krajowy Instytut Standardów i Technologii (NIST, National Institute of Standards and Technology), zwany dotychczas Krajowym Biurem ds. Standardów (NBS, National Bureau of Standards).

Uwagi

  • Testy zostały opracowane przez profesora Georga Marsaglia z Wydziału Statystyki Uniwersytetu Stanu Floryda i są dostępne w następującej witrynie sieci Web:
    http://www.csis.hku.hk/~diehard
  • Wichman, B.A. i I.D. Hill, Algorithm AS 183: An Efficient and Portable Pseudo-Random Number Generator, Applied Statistics, 31, 188-190, 1982.
  • Wichman, B.A. i I.D. Hill, Building a Random-Number Generator, BYTE, str. 127-128, marzec 1987.
  • Rotz, W. i E. Falk, D. Wood i J. Mulrow, A Comparison of Random Number Generators Used in Business, prezentowane na zebraniach Joint Statistical Meetings, Atlanta, GA, 2001.
Zgodnie z podstawową koncepcją, ułamkowa część sumy trzech liczb losowych [0,1] jest również liczbą losową [0,1]. Krytyczne instrukcje w kodzie języka Fortran z oryginalnego artykułu Wichmana i Hilla są następujące:
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) 
Zmienne IX, IY, IZ generują liczby całkowite z zakresów odpowiednio 0– 30268, 0– 30306 i 0– 30322. Są one łączone w ostatniej instrukcji w celu implementowania prostej, wyjaśnionej powyżej zasady: ułamkowa część sumy trzech liczb losowych [0,1] jest również liczbą losową [0,1].

Funkcja RAND generuje liczby pseudolosowe, dlatego sekwencja będzie zawierać powtarzane ciągi cyfr, jeżeli będzie dostatecznie długa. Łączenie liczb losowych, jak w procedurze Wichman-Hill, gwarantuje generowanie ponad 10^13 liczb przed wystąpieniem powtórzeń. W przypadku kilku testów Diehard uzyskano niezadowalające wyniki dla starszych wersji funkcji RAND, ponieważ cykl przed wystąpieniem powtórzeń był zbyt krótki.

Wyniki w starszych wersjach programu Excel

Funkcja RAND w starszych wersjach programu Excel była w praktyce odpowiednia dla wszystkich użytkowników, którzy nie wymagali długiej sekwencji liczb losowych (rzędu miliona). Uzyskano negatywne wyniki w przypadku kilku standardowych testów losowości i uznano, że problemy mogą występować, jeżeli konieczna jest długa sekwencja liczb losowych.

Wyniki w programie Excel 2003

Wdrożono prosty i efektywny algorytm. Nowy generator uzyskuje pozytywne wyniki wszystkich standardowych testów losowości.

Wnioski

Zaawansowani użytkownicy funkcji RAND, wymagający długich sekwencji liczb losowych, uzyskują lepsze rezultaty w przypadku nowego generatora dostępnego w programie Excel 2003. Inni użytkownicy nie powinni się zniechęcać do korzystania z funkcji RAND w starszych wersjach programu Excel.

Materiały referencyjne

Aby uzyskać więcej informacji dotyczących udokumentowanego problemu występującego w funkcji RAND, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
834520 Funkcja LOS zwraca liczby ujemne w programie Excel 2003

Właściwości

Numer ID artykułu: 828795 - Ostatnia weryfikacja: 3 stycznia 2008 - Weryfikacja: 5.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
Słowa kluczowe: 
kbinfo kbfunctions kbfuncstat KB828795

Przekaż opinię

 

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