Sztuka Programowania. Tom 2. Algorytmy seminumeryczne

Sztuka programowania (The Art of Computer Programming) – fundamentalna monografia autorstwa Donalda Knutha dotycząca ana

703 165 28MB

Polish Pages [832]

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Sztuka Programowania. Tom 2. Algorytmy seminumeryczne

Citation preview

Donald E. Knuth

Sztuka programowania Tom 2 Algorytmy seminumeryczne ¿i :

rii■à m *■&iwiiïü■; f

mmm s

tw



Z angielskiego przełożył

Adam Malinowski

OD REDAKCJI Udostępniane polskim Czytelnikom wielkie dzieło Donalda E. Knutha Sztuka programowania składa się obecnie z trzech tomów. W przedmowie do tomu 1 Autor wspomina o tomach 4 -7 , które nie zostały jeszcze opublikowane. Czytel­ nik nie powinien się więc dziwie, gdy w treści znajdzie odwołania do zagadnień zawartych w planowanych tomach. Autor zamieścił w swoim dziele wiele cytatów literackich. Niektóre z nich są mottami rozdziałów, a inne stanowią podsumowanie treści zawartych w podroz­ działach lub mniejszych partiach tekstu. Część z nich byliśmy zmuszeni pozosta­ wić w wersji oryginalnej. Przekład na język polski nie oddawałby bowiem gry słów wyrażającej myśli Autora. Podobnie postąpiliśmy z cytatami nieangielskimi przytoczonymi przez Autora w oryginalnym brzmieniu. Kilka dzieł, z których pochodzą motta, zostało przełożonych na język polski. Gdy jednak tłumaczenie literackie nie oddawało intencji Autora i nie zawierało słów, na użyciu których Mu zależało, zdecydowaliśmy się przytoczyć nowe tłumaczenie. Niektóre z oznaczeń matematycznych stosowanych przez Autora różnią się nieco od spotykanych w tradycyjnych książkach matematycznych. Ponieważ za­ leżało nam na tym, by polskie wydanie dzieła było pod każdym względem jak najbardziej zbliżone do oryginału, pozostawiliśmy je bez zmiany.

PRZEDMOWA Luba O feliof Liczbam i znękany, Nie podołam zrachować mych westchnień. — Ham let (a kt II, scena 2, wiersz 120)

Choć algorytmy omawiane w tej książce bezpośrednio dotyczą liczb, uważam, że powinno się je nazywać seminumerycznymi, ponieważ znajdują się na granicy między obliczeniami numerycznymi a symbolicznymi. Każdy z nich nie tylko stanowi opis obliczania szukanej wartości rozwiązania problemu numeryczne­ go, ale także ma dobrze współgrać z wewnętrznymi mechanizmami komputera. Ludzie często nie potrafią w pełni docenić piękna takiego algorytmu, jeśli nie dysponują pewną znajomością języka maszynowego; efektywność programu im­ plementującego algorytm to istotny czynnik, którego nie można oddzielić od samego algorytmu. Problem polega na znalezieniu najlepszych sposobów na to, by komputery radziły sobie z liczbami, a z tym wiążą się kwestie taktyczne i numeryczne. Tak więc tematyka tej książki to bez wątpienia zarówno część informatyki, jak i numerycznej matematyki. Niektórzy ludzie działający na „wyższych poziomach” analizy numerycznej zaliczą poruszane tutaj zagadnienia do domeny programistów systemowych. Inni, reprezentujący „wyższe poziomy” programowania systemowego, zaliczą je do do­ meny analityków numerycznych. Mam jednak nadzieję, że znajdzie się parę osób, które zechcą przyjrzeć się dokładniej tym podstawowym metodom. Choć pewno można je przypisać do niskiego poziomu, stanowią bazę wszelkich istotniejszych zastosowań komputerów do problemów numerycznych. Warto zatem dobrze je znać. Będziemy się tu zajmować ogniwem łączącym matematykę numeryczną z programowaniem komputerów. To właśnie połączenie obydwu rodzajów umie­ jętności czyni tę tematykę tak interesującą. W tym tomie daje się zauważyć więcej materiału matematycznego niż w po­ zostałych tomach, co jest spowodowane naturą poruszanych tu tematów. W więk­ szości wypadków niezbędne zagadnienia matematyczne wyprowadzam niemal od podstaw (lub z wyników dowiedzionych w tomie 1 ), ale w kilku łatwo rozpozna­ walnych podrozdziałach zakładam pewną znajomość analizy matematycznej. Niniejszy tom zawiera rozdziały 3 i 4 całego dzieła. Rozdział 3 jest po­ święcony liczbom losowym. Jest to nie tylko studium o rozmaitych sposobach generowania ciągów losowych, lecz także o statystycznych testach losowości oraz

X

PRZEDMOWA

przekształcaniu liczb losowych o rozkładzie jednostajnym w inne rodzaje wiel­ kości losowych; ta ostatnia kwestia ilustruje praktyczne zastosowania liczb lo­ sowych. Zamieściłem tu również podrozdział o naturze losowości jako takiej. W rozdziale 4 podejmuję próbę opowiedzenia fascynującej historii dokonywanych przez wieki ludzkich odkryć dotyczących procesów arytmetycznych. Omawiam rozmaite systemy reprezentacji liczb i sposoby konwersji między nimi, arytmetykę liczb zmiennopozycyjnych, liczb całkowitych wysokiej precyzji, liczb wymiernych, wielomianów i szeregów potęgowych, a w tym zagadnienia związane z rozkładem na czynniki oraz znajdowaniem największych wspólnych dzielników. Każdy z tych dwóch rozdziałów może służyć jako podstawa jednosemestralnego wykładu na uczelni wyższej. Chociaż w programach nauczania wie­ lu uczelni nie ma obecnie wykładów z liczb losowych czy arytmetyki, mam nadzieję, że Czytelnik skonstatuje, iż poruszane w tych rozdziałach problemy nadają się do jednorodnego ujęcia materiału o rzeczywistej wartości edukacyj­ nej. Moje doświadczenie wskazuje, że owe wykłady to dobry sposób na wpro­ wadzenie studentów w elementarną teorię prawdopodobieństwa i teorię liczb. Niemal wszystkie zagadnienia omawiane na takich wprowadzających wykładach pojawiają się w naturalny sposób w zastosowaniach, a istnienie owych zastoso­ wań może stanowić dla studenta istotną motywację do poznania i docenienia teorii. Co więcej, każdy rozdział zawiera kilka wskazówek dotyczących bardziej złożonych problemów. Mam nadzieję, że zachęcą one wiele osób do dalszych studiów. Książka ta jest w większej części niezależna, z wyjątkiem rozważań związa­ nych z maszyną MIX omówioną w tomie 1. Dodatek B zawiera wykaz stosowanych oznaczeń matematycznych; niektóre z nich różnią się nieco od tych spotykanych w tradycyjnych książkach matematycznych.

Przedmowa do wydania trzeciego Ukończone w 1980 roku drugie wydanie tej książki stanowiło pierwszy poważny test prototypowych systemów składu elektronicznego zwanych TgK i METflFONT. Dopiero teraz mogę się cieszyć w pełni ich ostateczną wersją. Wracam bo­ wiem do książki, dzięki której powstały. Nareszcie wszystkie tomy dzieła „Sztuka programowania” mogą mieć ten sam format ułatwiający uwzględnianie w nich przyszłych zmian w technice druku. Nowy układ umożliwił wniesienie dosłownie tysięcy poprawek, na wprowadzenie których czekałem bardzo długo. W nowym wydaniu przejrzałem każde słowo tekstu, starając się zachować młodzieńczy styl pierwotnych sformułowań, tu i ówdzie dodając czasem kilka dojrzałych sądów. Dołożyłem masę nowych ćwiczeń; do mnóstwa starych podopisywałem nowe, poprawione odpowiedzi. Zmiany są wszędzie, ale najwięcej jest ich w podrozdziałach 3.5 (o teoretycznych gwarancjach losowości), 3.6 (o prze­ nośnych generatorach liczb losowych), 4.5.2 (o binarnym algorytmie gcd) i 4.7 (o składaniu i iterowaniu szeregów potęgowych).

PRZEDMOWA

xi

Rozbudowa dzieła Sztuka, programowania trwa! Badania w dziedzinie al­ gorytmów seminumerycznych rozwijają się w niesłychanym tempie. Z te­ go powodu niektóre części są oznaczone znakiem „Uwaga, prace budowlane!” ostrzegającym, że tekst nie został zaktualizowany Moje archiwum puchnie od materiałów, które zamierzam zamieścić w ostatecznym, wspaniałym, czwartym wydaniu tomu 2, być może za 16 lat; najpierw muszę jednak skończyć tomy 4 i 5, a nie chciałbym odwlekać opublikowania ich dłużej, niż to konieczne. Jestem niezmiernie wdzięczny wielu setkom osób, które przez ostatnich 35 lat pomagały mi zbierać i ulepszać przedstawiony tu materiał. Większość czarnej roboty związanej z przygotowaniem nowego wydania wykonali Silvio Levy, który fachowo zredagował tekst elektroniczny, oraz Jeffrey Oldham, który przekonwertował prawie wszystkie oryginalne ilustracje na format programu METAPOST. Poprawiłem wszystkie błędy, które uważni Czytelnicy znaleźli w wydaniu drugim (jak również błędy, których, mimo wszystko, nikt nie znalazł). Starałem się uniknąć błędów w nowych partiach materiału. Spodziewam się jednak, że jakieś usterki pozostały i chciałbym jak najszybciej je poprawić. Z tego powodu bez żalu wypłacę 2,56 USD każdemu pierwszemu znalazcy dowolnego błędu technicznego, typograficznego lub historycznego*. Listę wszystkich zgłaszanych mi na bieżąco poprawek można znaleźć w witrynie W W W wymienionej na stronie vi niniejszego tomu. Stanford, Kalifornia Lipiec 1997

D. E. K.

Gdy książka pow staje przez osiem la t, je s t ju ż zb yt wielu kolegów, maszynistek, studentów , nauczycieli i przyjaciół, by zdołać im wszystkim podziękować. Poza tym nie mam zam iaru udzielać im zwyczajowego rozgrzeszenia od odpowiedzialności za błędy, które przegapili. Powinni byli m nie popraw ić! Niekiedy są oni nawet odpowiedzialni za koncepcje, które z szerszej perspektyw y mogą okazać się fałszywe. Tak czy owak, wszystkim takim osobom serdeczne dzięki. —

E D W ARD F. C A M P B E L L , JR. (1975)

‘D efendit num erus, ' [w liczbach opoka] maksymą głupców ; ‘D eperdit num erus, ' [w liczbach zguba] maksymą mędrców. — C. C. C O L T O N * Dotyczy to niestety tylko angielskiego oryginału (przyp. tłum.).

(1820)

UWAGI DO ĆWICZEŃ Ćwiczenia zawarte w tym dziele zostały opracowane z myślą o Czytelnikach samokształcących się lub biorących udział w zajęciach grupowych. Jest rzeczą niezmiernie trudną, o ile w ogóle możliwą, by nauczyć się czegoś, wyłącznie o tym czytając - nie sprawdzając nabytej wiedzy na konkretnych problemach, a co za tym idzie, nie będąc zmuszonym do myślenia o tym, co się przeczytało. Poza tym najlepiej uczymy się tego, co sami dla siebie odkrywamy. Z tych powodów ćwiczenia stanowią znaczną część książki. Autor dołożył wszelkich starań, by zawrzeć w nich jak najwięcej informacji i wybrać problemy ciekawe, a zarazem kształcące. W wielu książkach proste ćwiczenia są wymieszane z bardzo trudnymi. Jest to zła praktyka, gdyż Czytelnik chce z góry wiedzieć, ile czasu zajmie mu rozwią­ zanie danego problemu, a przy braku tej informacji może zdecydować się na pomi­ nięcie wszystkich ćwiczeń. Klasycznym przykładem takiej książki jest Dynamie Programming Richarda Bellmana. To ważna, pionierska praca, w której zadania są umieszczone pod wspólnym tytułem „Ćwiczenia i problemy badawcze” na koń­ cu niektórych rozdziałów. Skrajnie proste pytania występują w tej książce między trudnymi, nierozwiązanymi problemami. Plotka głosi, że dr Bellman zapytany kiedyś, jak odróżnić ćwiczenia od problemów badawczych, odpowiedział: „To, co dasz radę rozwiązać, jest ćwiczeniem, a co nie - problemem badawczym” . Można znaleźć dobre argumenty za zamieszczeniem w książce zarówno ćwi­ czeń, jak i problemów badawczych. Aby zatem uwolnić Czytelnika od konieczno­ ści rozstrzygania, które są którymi, autor wprowadził oceny punktowe wskazujące skalę trudności. Oceny mają następujące znaczenie: Ocena

Interpretacja

00 Skrajnie proste ćwiczenie, które można rozwiązać natychmiast, jeżeli zrozumiało się tekst. Zazwyczaj takie ćwiczenie można zrobić w pamięci. 10 Prosty problem, który zmusza do przemyślenia przeczytanego tekstu. Czytelnik powinien poradzić sobie z rozwiązaniem takiego ćwiczenia w najgorszym razie w ciągu minuty. Przyda się kartka i ołówek. 20 Przeciętny problem, umożliwiający sprawdzenie podstawowego opano­ wania materiału. Rozwiązanie go zajmie od piętnastu do dwudziestu minut. 30 Problem o umiarkowanym stopniu trudności i/lub złożoności. Rozwią­ zanie go może zająć ponad dwie godziny. Przy włączonym telewizorze nawet więcej. xiii

x iv

UWAGI DO ĆWICZEŃ

40 Dość trudny lub pracochłonny problem, nadający się na kolokwium semestralne. Student powinien sobie z nim poradzić w rozsądnym czasie, ale rozwiązanie jest nietrywialne. 50 Problem badawczy, którego według informacji autora nikt zadowalająco nie rozwiązał, choć próbowało wielu. Czytelnik, który znajdzie rozwią­ zanie, powinien je opublikować. Ponadto autor będzie wdzięczny za jak najszybsze poinformowanie go o rozwiązaniu (o ile jest poprawne). Inne oceny są wyznaczane przez interpolację powyższej „logarytmicznej” skali. Ocena 17 wskazuje na przykład ćwiczenie, które jest nieco prostsze od przeciętnego. Problemy z oceną 50, które zostały ostatnio rozwiązane przez Czytelników, mogą w następnych wydaniach (oraz w erracie publikowanej w In­ ternecie, zobacz strona vi) pojawić się już z oceną 45. Reszta z dzielenia oceny punktowej przez 5 oznacza ilość szczegółowej pracy do wykonania. Stąd rozwiązywanie ćwiczenia ocenionego na 2Ą może zająć więcej czasu niż ćwiczenia ocenionego na 25, ale to drugie będzie wymagało więcej pomysłowości. Autor starał się właściwie dobrać oceny, ale osobie, która wymyśla zadanie, trudno stwierdzić, jak pracochłonne będzie znalezienie rozwiązania. Przy tym różnym osobom rozwiązywanie niektórych typów problemów przychodzi łatwiej, a innych trudniej. Pozostaje mieć nadzieję, że oceny punktowe zadowalająco przybliżają poziom trudności. Należy je jednak traktować raczej jako ogólne wskazówki co do stopnia trudności niż dokładne miary trudności. Książka ta została napisana dla Czytelników o różnym stopniu matematycz­ nej biegłości i wyrafinowania. Skutkiem tego niektóre ćwiczenia są przeznaczone dla osób o zacięciu matematycznym. Ocena punktowa trudności ćwiczenia jest poprzedzona literą M, jeżeli dotyczy ono matematyki bardziej zaawansowanej niż potrzebna do pisania programów. Ćwiczenie jest oznaczone literami H M , jeżeli jego rozwiązanie wymaga znajomości analizy matematycznej lub matematyki wyższej nie przedstawionej w książce. Oznaczenie HM nie musi świadczyć o tym, że ćwiczenie jest trudne. Niektóre ćwiczenia są poprzedzone strzałką są one wyjątkowo pouczają­ ce i wyjątkowo polecane. Oczywiście po żadnym studencie/czytelniku nie należy się spodziewać, że rozwiąże wszystkie ćwiczenia; dlatego też zostały wyróżnione te najcenniejsze. (Nie oznacza to jednak wcale, że pozostałymi nie warto się zaj­ mować!) Każdy Czytelnik powinien przynajmniej spróbować rozwiązać wszystkie ćwiczenia z oceną 10 lub niższą; strzałki są przy tych z trudniejszych problemów, za które należałoby się zabrać w pierwszej kolejności. Rozwiązania większości ćwiczeń są zamieszczone w oddzielnej części zaty­ tułowanej „Odpowiedzi do ćwiczeń” . Należy korzystać z nich mądrze, to znaczy nie podglądać odpowiedzi, dopóki naprawdę nie spróbuje się rozwiązać zadania samodzielnie, i nie udawać, że nie ma się czasu. Odpowiedź może się okazać pouczająca i pomocna, ale dopiero po samodzielnym rozwiązaniu ćwiczenia lub po uczciwej próbie zrobienia tego. Podane rozwiązanie jest zazwyczaj krótkie, a jego szczegóły są omówione raczej pobieżnie. Autor zakłada bowiem, że Czy­

UWAGI DO ĆWICZEŃ

xv

telnik próbował samodzielnie zrobić ćwiczenie. Czasami rozwiązanie nie stanowi pełnej odpowiedzi na postawione pytanie, a czasami zawiera aż nadto informacji. Całkiem możliwe, że Czytelnik znajdzie lepsze rozwiązanie od tego opublikowa­ nego w książce albo znajdzie w rozwiązaniu błąd. W takim wypadku autor będzie wdzięczny za podanie wszystkich szczegółów. Kolejne wydania książki będą za­ wierały poprawione rozwiązania opatrzone nazwiskami pogromców błędów. Przy rozwiązywaniu danego ćwiczenia można posługiwać się rozwiązaniami poprzednich ćwiczeń, chyba że tekst wyraźnie tego zabrania. Ponieważ autor uwzględnił taką sytuację przy doborze ocen punktowych, może się okazać, że ćwiczenie n + 1 ma niższą ocenę niż ćwiczenie n, choć rozwiązanie ćwiczenia n wynika z ogólniejszego wyniku uzyskanego w ćwiczeniu n - j- 1 .

Zestawienie oznaczeń:

► M HM

00 10 20 Polecane 30 Dla zainteresowanych matematyką 40 Wymaga znajomości matematyki wyższej 50

Trywialne Proste (minuta) Średnie (kwadrans) Umiarkowanie trudne Na egzamin Problem badawczy

ĆW ICZENIA ► 1 . [00] Co oznacza ocena „M20” l 2. [10] Co mogą dać Czytelnikowi ćwiczenia? 3. [34] Leonhard Euler postawił w 1772 roku hipotezę, że równanie

4 . 4 , 4 4 w + x -f y — z nie ma rozwiązań w dodatnich liczbach całkowitych, ale Noam Elkies udowodnił w 1987 roku, że istnieje nieskończenie wiele rozwiązań [zobacz Math. Comp. 51 (1988), 825-835]. Znajdź wszystkie rozwiązania całkowitoliczbowe spełniające warunek 0 < w < x < y < z < 106. 4. [M50] Udowodnij, że dla całkowitych n, przy czym n > 4, równanie n

.

w + x

n

,

n

+ y —z

n

nie ma rozwiązań w dodatnich liczbach całkowitych w, x, y, z.

Ćwiczenie je s t najlepszym narzędziem do nauki. — R O B E R T R E C O R D E, The W hetstone o f W itte (1557)

SPIS TREŚCI

Rozdział 3 — Liczby losowe.......................................................................... 3.1. 3.2.

1 1 10

W prow adzenie...................................................................................... Generowanie liczb losowych o rozkładzie je d n o s ta jn y m ........................ 3.2.1. Metoda kongruencji lin io w e j....................................................... 3.2 .1 .1 . Wybór m o d u łu .............................................................. 3.2.1.2. Wybór m n o żn ik a ........................................................... 3.2.1.3. Potencjał......................................................................... 3.2.2. Inne m e to d y ................................................................................ Testy s ta ty s ty c zn e ............................................................................... 3.3.1. Ogólne procedury testowe do badania danych lo s o w y c h .............. 3.3.2. Testy em piryczne......................................................................... *3.3.3. Testy teoretyczne......................................................................... 3.3.4. Test spektralny............................................................................ Inne typy wielkości losowych................................................................. 3.4.1. Rozkłady lic z b o w e ..................................................................... 3.4.2. Losowe próbkowanie i ta s o w a n ie ................................................ Co to jest ciąg lo s o w y ? ........................................................................ Podsumowanie......................................................................................

10 12 17 24 27 43 44 64 84 97 126 126 151 159 196

R ozdział 4 — A ry tm e ty k a .........................................................................

207

4.1. 4.2.

208 229 229 245 263 271 284 284 305 315 341 353 353 356 381 406

3.3.

3.4.

*3.5. 3.6.

Pozycyjne systemy lic z b o w e ................................................................. Arytmetyka zmiennopozycyjna.............................................................. 4.2.1. Obliczenia pojedynczej precyzji.................................................... 4.2.2. Dokładność arytmetyki zmiennopozycyjnej.................................. *4.2.3. Obliczenia podwójnej p r e c y z j i.................................................... 4.2.4. Rozkład liczb zmiennopozycyjnych............................................. 4.3. Arytmetyka wielokrotnej p recy zji.......................................................... 4.3.1. Algorytmy k la s y c z n e .................................................................. *4.3.2. Arytmetyka m o d u la rn a .............................................................. *4.3.3. Jak szybko potrafimy m n o ży ć? .................................................... 4.4. Zamiana podstawy systemu pozycyjnego ............................................ 4.5. Arytmetyka liczb w y m iern y ch .............................................................. 4.5.1. U ł a m k i ....................................................................................... 4.5.2. Największy wspólny d zie ln ik ....................................................... *4.5.3. Analiza algorytmu Euklidesa........................... 4.5.4. Rozkład na czynniki pierwsze .................................................... xvi

Spis treści

xvii

4.6. Arytmetyka w ielom ia n ów ...................................................................... 4.6.1. Dzielenie wielomianów .............................................................. *4.6.2. Faktoryzacja wielom ianów........................................................... 4.6.3. Obliczanie p o t ę g ......................................................................... 4.6.4. Obliczanie wartości w ielom ianów ................................................. *4.7. Operacje na szeregach potęgowych ........................................................

449 451 471 496 522 566

Odpowiedzi do ć w ic z e ń .............................................................................

580

Dodatek A — Tabele wielkości numerycznych ......................................

784

1. 2.

Podstawowe stałe (w systemie d z ie s ię tn y m )............................... Podstawowe stałe (w systemie ó sem k o w ym )............................... Liczby harmoniczne, łiczby Bernoulliego, liczby Fibonacciego . . .

784 785 786

Dodatek B — Wykaz o z n a c z e ń ...............................................................

788

Skorowidz ze słownikiem

794

3.

ROZDZIAŁ

TRZECI

LICZBY LOSOWE Każdy, kto rozważa arytm etyczne m etody wytwarzania c yfr losowych, je s t oczywiście w stanie grzechu. — JOHN VO N NEUM ANN (1951) W obawie by nie być posądzonym o nieprawdę, m iej na względzie prawdopodobieństwo. — JO HN GAY (1727) Potrzebne są nie tylko prom ienie św iatła, by w io d ły ludzi w ćwiczeniu um iejętności stochastycznych. — JO HN O W E N (1662)

3.1. W PROW ADZENIE Liczby „wybierane losowo” przydają się w wielu różnych zastosowaniach, takich jak na przykład: a) Symulacja. Kiedy używamy komputera do symulowania zjawisk natural­ nych, liczby losowe są konieczne do nadania całości cech realizmu. Symulację stosuje się w wielu dziedzinach - od fizyki nuklearnej (gdzie cząsteczki podlegają losowym kolizjom) do badań operacyjnych (gdzie ludzie przybywają, dajmy na to, na lotnisko w losowych odstępach czasu). b) Próbkowanie. Często niepraktycznie jest badać wszystkie możliwe przypad­ ki, próbka losowa zaś daje pogląd na to, jak wygląda „typowa” sytuacja. c) Analiza numeryczna. Opracowano szereg pomysłowych metod rozwiązywa­ nia skomplikowanych problemów numerycznych przy wykorzystaniu liczb loso­ wych. Napisano na ten temat wiele książek. d) Programowanie komputerów. Wartości losowe stanowią dobre źródło da­ nych do testowania efektywności algorytmów komputerowych. Co ważniejsze, są one podstawą działania algorytmów randomizowanych (probabilistycznych), które często zdecydowanie przewyższają swoje deterministyczne odpowiedniki. To zastosowanie liczb losowych znajduje się w centrum naszych zainteresowań l

2

LICZBY LOSOWE

3.1

w niniejszej serii książek; dlatego też liczby losowe rozważamy już w rozdziale 3, przed omówieniem większości pozostałych algorytmów komputerowych. e) Podejmowanie decyzji. Krążą pogłoski, że liczni decydenci podejmują nie­ kiedy decyzje, rzucając monetą łub kostką. Plotka głosi, że niektórzy profesorowie uniwersyteccy wystawiają oceny na podobnej zasadzie. Czasem ważne jest, aby podejmowana decyzja była absolutnie bezstronna. Losowość jest także istotnym składnikiem strategii optymalnych w teorii gier macierzowych. f) Estetyka. Odrobina losowości potrafi ożywić grafikę czy muzykę generowaną przez komputer. Na przykład taki wzór: □ □ □ □ £ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □ □

przyci, gaw 2rok KarHZiei niz taki* J

□ □ □ □ □ □ □ □ noLm m n n cu iz] □ □ □ □ □ □ □ □

[Zobacz D. E. Knuth, Buli. Amer. Math. Soc. 1 (1979), 369]. g) Rozrywka. Rzucanie kostką, tasowanie talii kart, kręcenie kołem ruletki itd. to fascynujące zajęcia dla każdego. Od tych tradycyjnych zastosowań liczb loso­ wych wzięła nazwę „metoda Monte Carlo” - ogólne pojęcie dotyczące algoryt­ mów korzystających z liczb losowych. Ludzie rozważający tę kwestię z reguły wdają się w filozoficzne dysputy na temat znaczenia słowa „losowy” . W pewnym sensie nie ma czegoś takiego jak liczba losowa; czy na przykład 2 jest liczbą losową? Można natomiast mówić o ciągu niezależnych liczb losowych o określonym rozkładzie, a to oznacza, z grub­ sza rzecz biorąc, że każda z liczb została wybrana zupełnie przypadkowo, bez żadnego związku z wyborem pozostałych liczb w ciągu, i że każda liczba mieści się w dowolnym ustalonym zakresie wartości z określonym prawdopodobieństwem. Rozkład jednostajny (równomierny) na skończonym zbiorze liczb to taki, w którym każda z liczb jest jednakowo prawdopodobna. Rozkład zazwyczaj uważa się za jednostajny, jeżeli nie został wyraźnie określony inaczej. Każda z dziesięciu cyfr od 0 do 9 wystąpi na około ^ pozycji w ciągu losowych cyfr (o rozkładzie jednostajnym). Każda para dwóch kolejnych cyfr powinna wystąpić na około —^ pozycji itd. Jeśli jednak weźmiemy naprawdę losowy ciąg miliona cyfr, to nie zawsze będzie on zawierać dokładnie 100000 zer, 100000 jedynek itd. W rzeczywistości szanse na to są raczej skromne; tyle natomiast będzie ich średnio, jeśli zbadamy ciąg takich ciągów. Każdy konkretny ciąg miliona cyfr jest tak samo prawdopodobny jak każdy inny. Jeśli zatem wybieramy losowo milion cyfr i pierwszych 999999 okaże się zerami, to w prawdziwie losowej sytuacji szansa na to, że ostatnia cyfra będzie zerem, wynosi nadal dokładnie Wielu ludziom wydaje się to paradoksalne, ale w rzeczywistości nie ma tu żadnej sprzeczności. Istnieje szereg sposobów sformułowania przyzwoitej abstrakcyjnej definicji losowości. Wrócimy do tej* interesującej kwestii w podrozdziale 3.5, a na razie zadowolimy się intuicyjnym rozumieniem tego pojęcia. Dawno temu ludzie, którym do pracy naukowej były potrzebne liczby lo­ sowe, wyciągali kule z urny, rzucali kostką albo rozdawali karty. W 1927 roku

WPROWADZENIE

3.1

3

L. H. C. Tippett opublikował tablicę obejmującą ponad 40000 cyfr losowych, „zaczerpniętych losowo z raportów statystycznych” . Od tego czasu zbudowano wiele urządzeń do mechanicznego generowania liczb losowych. Pierwszej takiej maszyny użyli w 1939 roku M. G. Kendall i B. Babington-Smith do utwo­ rzenia tablicy zawierającej 100000 cyfr losowych. Uruchomiony po raz pierw­ szy w 1951 roku komputer Ferranti Mark I miał wbudowany rozkaz, który umieszczał w akumulatorze 20 losowych bitów, korzystając z rezystancyjnego generatora szumów; rozwiązanie to polecił A. M. Turing. W 1955 roku RA N D Corporation opublikowała powszechnie stosowaną tablicę miliona cyfr losowych, otrzymaną za pomocą innego specjalnego urządzenia. ERNIE - słynna maszyna do generowania liczb losowych - była używana przez wiele lat do wybierania wygrywających liczb w loterii British Premium Savings Bonds. [Zobacz artykuły Kendalla i Babingtona-Smitha w J. Royal Stat. Soc. A 101 (1938), 147-166; B 6 (1939), 51-61. Zobacz też omówienie komputera Mark I autorstwa S. H. Lavingtona w C A C M 21 (1978), 4-12; komentarz o tablicy R A N D w Math. Comp. 10 (1956), 39-43; oraz omówienie maszyny ERNIE autorstwa W. E. Thomsona, J. Royal Stat. Soc. A 122 (1959), 301-333]. Wkrótce po wprowadzeniu komputerów zaczęto poszukiwać efektywnych sposobów uzyskiwania liczb losowych w programach komputerowych. Można było stosować tablice, ale użyteczność tej metody jest ograniczona ze względu na potrzebną pamięć i czas wprowadzania, ryzyko, że tablica może się okazać zbyt mała, oraz kłopoty związane z jej przygotowaniem. Można by podłączyć do komputera maszynę w rodzaju ERNIE-go, jak w komputerze Ferranti Mark I, ale to rozwiązanie okazało się niesatysfakcjonujące, ponieważ niemożliwe było dokładne odtworzenie obliczeń przy testowaniu programu. Co więcej, tego ty­ pu maszyny miewają skłonności do usterek, które niezmiernie trudno wykryć. Postęp techniczny przywrócił użyteczność tablic w latach dziewięćdziesiątych: łatwy w rozpowszechnianiu CD-ROM może pomieścić miliard dobrze przete­ stowanych losowych bajtów. George Marsaglia przyczynił się do wskrzeszenia metody tablic liczb losowych w 1995 roku, przygotowując dysk demonstracyjny, zawierający 650 megabajtów losowych danych, uzyskanych przez połączenie sy­ gnału wyjściowego z obwodu szumów z deterministycznie przetworzoną muzyką rap. (Określił to jako „szumy biały i czarny” ). Nieodpowiedniość metod mechanicznych w początkowym okresie spowodo­ wała zainteresowanie produkowaniem liczb losowych za pomocą zwykłych kom­ puterowych operacji arytmetycznych. John von Neumann zaproponował to po­ dejście około 1946 roku; jego pomysł polegał na obliczeniu kwadratu poprzedniej liczby losowej i wycięciu środkowych cyfr. Jeśli na przykład generujemy liczby 10-cyfrowe, a poprzednią wartością było 5772156649, to po podniesieniu do kwadratu dostajemy 33317792380594909201; zatem następną liczbą jest 7923805949. Ta metoda budzi dość oczywistą wątpliwość: jak wygenerowany w ten sposób ciąg może być losowy, skoro każda liczba jest dokładnie określona przez swój

4

LICZBY LOSOWE

3.1

poprzednik? (Zobacz komentarz von Neumanna na początku tego rozdziału). Odpowiedź brzmi następująco: ciąg nie jest losowy, ale wygląda na taki. W ty­ powych zastosowaniach faktyczna zależność między liczbą a jej następnikiem nie ma znaczenia, więc w nielosowym charakterze ciągu nie ma nic złego. Intuicyj­ nie rzecz biorąc, wzięcie środka kwadratu wydaje się całkiem niezłą przeróbką poprzedniej liczby. Ciągi wygenerowane metodą deterministyczną, taką jak powyższa, są często w literaturze technicznej naukowo określane jako pseudolosowe lub quasi-losowe, ale w tej książce z reguły będziemy nazywali je po prostu ciągami losowymi, pamiętając, że w rzeczywistości jedynie wyglądają na losowe. Być może wszystko, co można powiedzieć o dowolnym ciągu losowym to tyle, że „wygląda na losowy” . Liczby losowe generowane deterministycznie za pomocą komputerów sprawowały się całkiem nieźle w niemal wszystkich zastosowaniach, o ile starannie dobrano odpowiednią metodę. Oczywiście ciągi deterministyczne nie zawsze stanowią wła­ ściwe rozwiązanie; na pewno nie powinny zastąpić ERNIE-go w totalizatorach. Oryginalna „metoda środka kwadratu” von Neumanna okazała się stosun­ kowo kiepskim źródłem liczb losowych. Niebezpieczeństwo polega na tym, że ciąg ma tendencję do wpadania w „koleinę” - krótki cykl powtarzających się elementów. Jeśli na przykład w ciągu kiedykolwiek pojawi się zero, to będzie się dalej powtarzać w nieskończoność. Wiele osób eksperymentowało z metodą środka kwadratu na początku lat pięćdziesiątych. Pracując z liczbami cztero- zamiast dziesięciocyfrowymi, G. E. Forsythe wypróbował 16 różnych wartości początkowych i stwierdził, że 12 spo­ śród nich prowadziło do ciągu kończącego się cyklem 6100, 2100, 4100, 8100, 6100, . . . , dwie zaś prowadziły do zera. Szerzej zakrojone testy przeprowadził N. Metropolis, głównie w systemie binarnym. Wykazał on, że dla liczb 20-bitowych jest 13 różnych cykli, do których może prowadzić ciąg środków kwadratów, a najdłuższy z nich ma okres długości 142. Łatwo wznowić metodę środka kwadratu z nową wartością, kiedy doszliśmy do zera, ale nieco trudniej unikać długich cykli. W ćwiczeniach 6 i 7 jest omó­ wionych kilka interesujących sposobów wykrywania cykli w ciągach okresowych przy użyciu bardzo małej ilości pamięci. Wady metody środka kwadratu z teoretycznego punktu widzenia są przed­ stawione w ćwiczeniach 9 i 10. Operując z kolei na liczbach 38-bitowych, Metro­ polis uzyskał ciąg około 750000 liczb, zanim wystąpiła degeneracja, a otrzyma­ nych 750000 x 38 bitów przeszło pomyślnie statystyczne testy losowości. [Symp. on Monte Carlo Methods (Wiley, 1956), 29-36]. To doświadczenie wykazało, że metoda środka kwadratu może dawać użyteczne wyniki, ale raczej niebezpiecznie jest pokładać w niej zbyt wiele wiary, dopóki nie przeprowadzi się wyrafinowa­ nych obliczeń. Wiele generatorów liczb losowych, używanych kiedy powstawał ten rozdział, nie było zbyt dobrych. Ludzie tradycyjnie unikają uczenia się o takich procedu­ rach. Stare, stosunkowo kiepskie metody były ślepo powielane, aż użytkownicy przestali się orientować w ich pierwotnych ograniczeniach. W tym rozdziale prze­ konamy się, że zapoznanie się z najważniejszymi faktami dotyczącymi generato­

3.1

WPROWADZENIE

5

rów liczb losowych nie jest trudne. Aby jednak uniknąć przy tym najczęstszych pułapek, konieczna jest rozwaga. Nie jest łatwo wynaleźć bezpieczne źródło liczb losowych. O fakcie tym autor przekonał się namacalnie w 1959 roku, kiedy próbował stworzyć rewelacyjny generator, stosując takie oto osobliwe podejście: Algorytm K (Generator „superlosowy”) . Mając daną 10-cyfrową liczbę dziesięt­ ną X, algorytmu tego można użyć do zamiany X na następną liczbę w rzekomo losowym ciągu. Chociaż można by się spodziewać, że algorytm daje dość losowy ciąg, z podanych poniżej powodów w rzeczywistości wcale nie jest bardzo dobry. (Czytelnik nie musi studiować tego algorytmu bardzo szczegółowo, wystarczy zaobserwować, jaki jest skomplikowany; warto zwłaszcza zwrócić uwagę na kroki K I i K2). K I. [Wybór liczby iteracji] Przyjmij Y |_X/109J - najbardziej znacząca cyfra X (Będziemy wykonywać kroki od K2 do K13 dokładnie Y + 1 razy; czyli zastosujemy przekształcenia randomizujące losową liczbę razy). K 2 . [Wybór kroku losowego] Przyjmij Z 5 x 109] Jeśli X X + 5000000000.

< 5000000000, to przyjmij X *—

K4. [Środek kwadratu] Zastąp X przez |_X2/105J mod 1010, czyli przez środek kwadratu X . K5. [Mnożenie] Zastąp X przez (1001001001X ) mod 1010. K 6 . [Pseudodopełnienie] Jeśli X < 100000000, przyjmij X -i— X + 9814055677; w przeciwnym razie przyjmij X 1010 — X . K7. [Zamiana połówek] Zamień pięć mniej znaczących cyfr X z pięcioma bar­ dziej znaczącymi; tzn. przyjmij X 0, że X n = JY2n oraz że najmniejsza taka wartość n mieści się w zakresie fi ^ n ^ fi + A. Ponadto udowodnij, że wartość X n jest jednoznaczna w tym sensie, że jeżeli X n = X 2n i X r — JGr, to X r = X n. c) Wykorzystaj pomysł z części (b) do zaprojektowania algorytmu obliczania fi i A dla dowolnej zadanej funkcji / i dowolnego zadanego X q, wykonującego najwyżej 0( f i -F A) kroków i używającego stałej liczby komórek pamięci. ► 7. [M21] (R. P. Brent, 1977) Niech £(n) będzie największą potęgą 2 mniejszą bądź równą n; zatem na przykład ¿(15) = 8 oraz £(£(n)) = i(ń ). a) Wykaż, że zgodnie z notacją z ćwiczenia 6 istnieje takie n > 0, że X n — X ą n)-\. Znajdź wzór, który wyraża najmniejsze takie n poprzez opisujące okres liczby fi i A. b) Zastosuj ten wynik do zaprojektowania algorytmu, którego można używać w po­ łączeniu z dowolnym generatorem liczb losowych typu X n+i = f ( X n) w celu zabezpieczenia go przed wpadnięciem w nieskończony cykl. Twój algorytm powi­ nien obliczać długość okresu A, korzystając jedynie z niewielkiej ilości pamięci nie możesz po prostu zapamiętywać wszystkich obliczonych wartości ciągu!

8 . [23] Zbadaj dokładnie metodę środka kwadratu w przypadku dwucyfrowych liczb dziesiętnych. a) Możemy rozpocząć przekształcanie od każdej ze 100 możliwych wartości 00, 01, ..., 99. Ile spośród tych wartości prowadzi w końcu do cyklu 00, 00, ... ? [Przykład: Zaczynając od 43, dostajemy ciąg 43, 84, 05, 02, 00, 00, 00, ... ]. b) Ile jest możliwych końcowych cykli? Jakiej długości jest najdłuższy cykl? c) Jaka wartość lub wartości początkowe dają najwięcej różnych elementów przed powtórzeniem się ciągu?

4

9. [ M l ] Udowodnij, że metoda środka kwadratu zastosowana do liczb 2n-cyfrowych w systemie o podstawie b ma następującą wadę: Jeśli ciąg zawiera liczbę, której n najbardziej znaczących cyfr jest zerami, to kolejne liczby będą coraz mniejsze, aż pojawi się zero.

10 . [M16] Przy założeniach z poprzedniego ćwiczenia, co możesz powiedzieć o ciągu liczb następujących po X , jeśli n najmniej znaczących cyfr X jest zerami? Co, jeśli n + 1 najmniej znaczących cyfr jest zerami? ►11. [M26] Rozważmy ciągi generatorów liczb losowych postaci opisanej w ćwiczeniu 6 . Jeśli wybierzemy f ( x ) i X q losowo - innymi słowy, jeśli założymy, że każda spośród mm możliwych funkcji f ( x ) jest jednakowo prawdopodobna oraz że każda spośród m możli­ wych wartości Xo jest jednakowo prawdopodobna - to jakie jest prawdopodobieństwo, że ciąg w końcu zdegeneruje się do cyklu długości A = 1 ? ( Uwaga: Założenia dla tego problemu stanowią naturalny sposób myślenia o „losowym” generatorze liczb losowych tego typu. Można się spodziewać, że metoda taka jak algorytm K będzie się zachowywać podobnie jak rozważany tu generator; rozwiązanie tego problemu pozwala ocenić, na ile niesłychany jest w rzeczywistości zbieg okoliczności uwidoczniony w tabeli 1 ). ►1 2 . [MSI ] Przy założeniach z poprzedniego ćwiczenia, jaka jest średnia długość końco­ wego cyklu? Jaka jest średnia długość ciągu, zanim zacznie się on powtarzać? (Zgodnie z notacją z ćwiczenia 6 chcemy zbadać średnie wartości A i fi + A).

13. [MĄ2\ Jeśli funkcja f ( x ) jest wybrana losowo w sensie takim jak w ćwiczeniu 11, to jaka jest średnia długość najdłuższego cyklu, który można otrzymać, zmieniając wartość

WPROWADZENIE

3.1

9

początkową Xo? ( Uwaga: Rozważaliśmy już analogiczny problem w przypadku, kiedy f ( x ) jest losową permutacją; zobacz ćwiczenie 1.3.3-23).

14. [MS8] Jeśli funkcja f ( x ) jest wybrana losowo w sensie takim jak w ćwiczeniu 11, to jaka jest średnia liczba różnych końcowych cykli, do których można dojść, zmieniając wartość początkową? [Zobacz ćwiczenie 8 (b)]. 15. [ M l 5] Jeśli funkcja f ( x ) jest wybrana losowo w sensie takim jak w ćwiczeniu 11, to jakie jest prawdopodobieństwo, że żaden z końcowych cykli nie będzie miał długości 1 , niezależnie od wyboru Xq? 16. [15] Ciąg generowany tak jak w ćwiczeniu 6 musi się zacząć powtarzać po wy­ generowaniu co najwyżej m wartości. Przypuśćmy, że uogólnimy tę metodę tak, żeby X njr\ zależało zarówno od X n- i , jak i od X n; formalnie, niech f ( x , y ) będzie funkcją taką, że dla 0 ^ x ,y < m zachodzi 0 ^ f ( x , y ) < m. Ciąg konstruujemy, wybierając dowolnie Ao i X i, a następnie przyjmując

X n+i = / (X n) X n_ i )

dla n > 0.

Jaki jest największy możliwy do osiągnięcia okres w tym przypadku?

17. [10] Uogólnij sytuację z poprzedniego ćwiczenia tak, żeby X n+i zależało od k poprzednich wartości ciągu. 18. [M20] Znajdź analogiczną do tej z ćwiczenia 7 metodę znajdowania cykli dla ogólnej postaci generatora liczb losowych, rozważanej w ćwiczeniu 17. 19. [MĄ8] Rozwiąż problemy z ćwiczeń od 11 do 15 w ogólniejszym przypadku, kiedy X n+i zależy od k poprzednich wartości ciągu. Należy przyjąć, że każda spośród ramfc funkcji f ( x i,...,Xjfc) jest jednakowo prawdopodobna. (Uwaga: Liczba funkcji, które dają najdłuższy okres, jest analizowana w ćwiczeniu 2.3.4.2-23).

20 . [30] Znajdź wszystkie nieujemne wartości X < 1010, dla których algorytm K dochodzi do „samopowtarzalnej” liczby z tabeli 1 . 2 1 . {42 } Udowodnij lub obal: Odwzorowanie X i—»■ f ( X ) zdefiniowane przez algo­ rytm K ma dokładnie pięć cykli o długościach 3178, 1606, 1024, 943 i 1.

22 . [21] (H. Rolletschek) Czy dobrym pomysłem byłoby generowanie liczb losowych jako ciągu /(O), /(1), /(2), ..., gdzie / jest funkcją losową, zamiast ciągu xq, f ( x o), f { f { x o)) itd.? ►23. [M26] (D. Foata i A. Fuchs, 1970) Pokaż, że każdą spośród mm funkcji f ( x ) rozważanych w ćwiczeniu 6 można reprezentować jako ciąg ( x o , x i , ..., x m- i ) o nastę­ pujących własnościach: i) ( xo, Xi , .. jest permutacją ciągu (/ ( 0) , / ( l ) , ... ,/(m - 1 )). ii) (/ ( 0),... ,/ (m 1)) można jednoznacznie odtworzyć z (¿C05 *£i? ■■■?x m—i)* iii) Elementy, które występują w cyklach /, to { x o , x i , ... , Xk- i }, gdzie k jest takim największym indeksem, że tych k elementów jest różnych. iv) Jeśli Xj ^ {xo, x i , ..., X j - i ] , to X j - i = f ( x j ), o ile Xj nie jest najmniejszym elementem w pewnym cyklu /. V) (/ (0 ),/ (l),...,/ (m — 1 )) jest permutacją ciągu ( 0 , 1 ,... ,m — 1 ) wtedy i tylko wtedy, gdy ( xo, xi , ... , x m- 1) reprezentuje odwrotność tej permutacji przez „nie­ zwykłą odpowiedniość” z punktu 1.3.3. vi) xo = x\ wtedy i tylko wtedy, gdy ( x i , ..., xm- i ) reprezentuje drzewo zorientowane przez konstrukcję z ćwiczenia 2.3.4.4-18, gdzie f ( x ) jest ojcem x.

10

LICZBY LOSOWE

3.2

3.2. GENEROWANIE LICZB LOSOWYCH O ROZKŁADZIE JEDNOSTAJNYM W tym podrozdziale będziemy rozważali metody generowania ciągu ułamków losowych - losowych liczb rzeczywistych Un o rozkładzie jednostajnym ( równo­ miernym]) na przedziale od zera do jedynki. Ponieważ w komputerze można re­ prezentować liczbę rzeczywistą jedynie z ograniczoną dokładnością, faktycznie będziemy generować liczby całkowite X n leżące między zerem a pewną liczbą m; ułamek U Ti



X Tifm

będzie wówczas leżeć między zerem a jedynką. Zazwyczaj m jest rozmiarem słowa maszynowego, więc można traktować (konserwatywnie) jako całkowitoliczbową zawartość słowa maszynowego z kropką pozycyjną umieszczoną na prawym końcu, Un zaś można traktować (liberalnie) jako zawartość tego samego słowa z kropką pozycyjną po lewej stronie.

3.2.1. Metoda kongruencji liniowej Zdecydowanie najpopularniejsze spośród stosowanych obecnie generatory liczb losowych stanowią szczególne przypadki poniższego schematu, wprowadzonego przez D. H. Lehmera w 1949 roku. [Zobacz P roc. 2nd Symp. on Large-Scale Digital Calculating Machinery (Cambridge, Mass.: Harvard University Press, 1951), 141-146]. Wybieramy cztery magiczne liczby całkowite: m, a, c/ X q}

moduł; mnożnik; krok; wartośćpoczątkowa;

0 < m. 0 < a < m. 0 < c < m.

,, ^'

0 < X q < m.

Nasz ciąg liczb losowych (X n) otrzymujemy wówczas, przyjmując X n+i — (a X Tl + c) mod m,

n > 0.

( 2)

Nazywa się go liniowym ciągiem kongruencyjnym. Branie reszty mod m przypo­ mina nieco sprawdzanie, gdzie zatrzyma się kulka na wirującym kole ruletki. Na przykład dla rn = 10 i X 0 — a = c = 7 otrzymanym ciągiem jest 7, 6 , 9, 0, 7, 6 , 9, 0, ... .

(3)

Jak pokazuje ten przykład, ciąg nie zawsze jest „losowy” dla wszystkich wyborów m, a, c i X q. Regułami odpowiedniego wyboru magicznych liczb zajmiemy się dokładnie w dalszych częściach tego rozdziału. Przykład ( 3 ) ilustruje fakt, że ciągi kongruencyjne zawsze wpadają w pętlę: w końcu pojawia się cykl, który się nieustannie powtarza. Jest to wspólna cecha wszystkich ciągów ogólnej postaci X n+i = f ( X n), gdzie funkcja / przekształca pewien zbiór skończony w siebie; zobacz ćwiczenie 3.1-6. Powtarzający się cykl jest nazywany okresem; ciąg ( 3 ) ma okres długości 4. Użyteczny ciąg będzie miał oczywiście stosunkowo długi okres. Przypadek szczególny c = 0 zasługuje na osobną wzmiankę, ponieważ proces generowania liczby jest nieco szybszy dla c — 0 niż dla c / 0 . Przekonamy

METODA KONGRUENCJI LINIOWEJ

3.2.1

11

się później, że ograniczenie c = 0 skraca okres ciągu, ale nadal możliwe jest uzyskanie rozsądnie długiego okresu. W oryginalnej metodzie Lehmera było właśnie c = 0, chociaż wspomniał on o możliwości użycia c ^ 0. Fakt, że c ^ 0 może prowadzić do dłuższych okresów, odkrył Thomson [Comp. J. 1 (1958), 83, 86] i, niezależnie, Rotenberg [JA C M 7 (1960), 75-77]. Wielu autorów stosuje określenia metoda kongruencji multiplikatywnej i metoda kongruencji mieszanej do oznaczenia liniowych ciągów kongruencyjnych, odpowiednio, z c = 0 i z c ^ 0 . Liter m, a, c oraz Xo będziemy używać w tym rozdziale w sensie opisanym powyżej. Ponadto wygodnie będzie zdefiniować b —a —1

( 4)

w celu uproszczenia wielu z naszych wzorów. Możemy od razu odrzucić przypadek a = 1, ponieważ oznaczałoby to, że X n = (Xo~\~nc) mod m, więc ciąg na pewno nie zachowywałby się jak ciąg losowy. Przypadek a — 0 jest jeszcze gorszy. Zatem do celów praktycznych możemy założyć, że a ^ 2, 6 > 1. ( 5) Teraz możemy udowodnić uogólnienie wzoru ( 2 ), X njrk = (akX n + (ak — 1 )c/b) mod m,

k > 0,

n > 0,

( 6)

które wyraża element (n+A;)-ty bezpośrednio przez element n-ty. (Warto zwrócić uwagę na przypadek szczególny n = 0 w tym równaniu). Wynika z niego, że podciąg składający się z co k-tego elementu ( X n) jest również liniowym ciągiem kongruencyjnym, o mnożniku ak mod m i kroku ((a fc — 1 )c/b) mod m. Ważnym wnioskiem z równania ( 6) jest to, że ogólny ciąg zdefiniowany przez m, a, c oraz X q można wyrazić bardzo prosto za pomocą przypadku szczególnego, w którym c = 1 i Xo = 0. Niech Y0 = 0,

Yn+ 1 = (aYn + 1) mod m.

(7)

Zgodnie z równaniem ( 6 ) mamy Yk = (ak —l)/b (modulo m), zatem dla ogólnego ciągu określonego przez ( 2 ) zachodzi X n = (AYn + X q) mod m,

gdzie A = (X q 6 + c) mod m.

( 8)

ĆW ICZENIA 1 . [10] Przykład ( 3 ) dotyczy sytuacji, w której Xą = X o , zatem ciąg znowu zaczyna się od początku. Podaj przykład liniowego ciągu kongruencyjnego z m — 10, w którym Xo nigdy nie pojawia się ponownie. ► 2. [M20] Pokaż, że jeśli a i m są względnie pierwsze, to liczba Xo zawsze będzie występować w okresie. 3. [M10] Wyjaśnij, dlaczego jeśli a i m nie są względnie pierwsze, to ciąg będzie miał pewną wadę i zapewne będzie niezbyt losowy; zatem ogólnie dobrze byłoby, żeby mnożnik a był względnie pierwszy z modułem m. 4. [11] Udowodnij równanie ( 6). 5. [M20] Równanie ( 6) zachodzi dla k ^ 0. Podaj, jeśli to możliwe, wzór wyrażający X n+k przez X n dla ujemnych wartości k.

12

LICZBY LOSOWE

3.2.1.1

3.2 .1 . 1 . W y b ó r modułu. Naszym obecnym celem jest znalezienie dobrych wartości parametrów definiujących liniowy ciąg kongruencyjny. Zajmijmy się najpierw właściwym wyborem liczby m. Chcemy, żeby m było dość duże, po­ nieważ okres nie może mieć więcej niż m elementów. (Nawet jeśli zamierzamy generować tylko losowe zera i jedynki, nie powinniśmy brać m = 2 , bowiem wówczas ciąg w najlepszym razie byłby postaci ... ,0,1,0,1,0, 1 , . . . ! Metody otrzymywania losowych zer i jedynek z liniowych ciągów kongruencyjnych są omówione w podrozdziale 3.4). Innym czynnikiem, który wpływa na wybór modułu m, jest szybkość gene­ rowania. Chcemy wybrać taką wartość, żeby obliczenie (a X n + c) mod m było szybkie. Jako przykład rozważmy maszynę MIX. Możemy obliczyć y mod m, umiesz­ czając y w rejestrach A oraz X i dzieląc przez m. Zakładając, że y i m są dodatnie, widać, że y mod m pojawi się wówczas w rejestrze X. Jednak dzielenie jest stosunkowo powolną operacją i można go uniknąć, jeśli za m przyjmiemy szczególnie dogodną wartość, taką jak rozmiar słowa w naszym komputerze. Niech w będzie rozmiarem słowa maszynowego, czyli niech wynosi 2e na e-bitowym komputerze binarnym lub 10e na e-cyfrowej maszynie dziesiętnej. (W tej książce często będziemy używać litery e na oznaczenie dowolnego wykład­ nika całkowitoliczbowego, a nie jako podstawy logarytmu naturalnego, licząc na to, że kontekst uczyni nasz zapis jednoznacznym. Fizycy mają podobny problem, kiedy oznaczają przez e ładunek elektronu). Wynik operacji dodawania jest zazwyczaj podawany modulo re, z wyjątkiem maszyn z notacją uzupełnieniową do jedynki. Mnożenie mod w jest również dość proste, ponieważ szukany wynik stanowi dolna połowa iloczynu. Tak więc poniższy program efektywnie oblicza wartość (a X + c) mod w: LDA MUL SLAX ADD

A X 5 C

rA a. rAX 0.

( 4)

Ten ciąg można obliczyć mniej więcej równie efektywnie co ( 1 ), nie martwiąc się o wystąpienie przepełnienia. Ma on interesujące powiązanie z oryginalną metodą środka kwadratu von Neumanna. Jeśli za Yn przyjmiemy 2eX n, czyli liczbę podwójnej precyzji otrzymaną przez dostawienie e zer na prawo od binarnej reprezentacji X n, to Yn+i składa się dokładnie ze środkowych 2e cyfr liczby

28

LICZBY LOSOWE

3.2.2

4- 2eYnl Innymi słowy, metoda Coveyou jest niemal identyczna z nieco zdegenerowaną metodą środka kwadratu w podwójnej precyzji, ma jednak zagwa­ rantowany długi okres. Dalsze świadectwa jej losowości można znaleźć w pracy Coveyou, cytowanej w odpowiedzi do ćwiczenia 8 . Narzucają się również inne uogólnienia równania ( i). Moglibyśmy na przy­ kład spróbować zwiększyć długość okresu ciągu. Okres liniowego ciągu kongruencyjnego jest całkiem długi; dla m równego w przybliżeniu rozmiarowi słowa w komputerze dostajemy zazwyczaj okresy rzędu 109 lub dłuższe, a w typo­ wych obliczeniach wykorzystamy jedynie bardzo mały fragment ciągu. Kiedy jednak będziemy omawiać w punkcie 3.3.4 pojęcie „dokładności” generatora, zobaczymy, że długość okresu wpływa na osiągalny dla danego ciągu stopień losowości. Warto zatem starać się wydłużyć okres - wynaleziono w tym celu szereg metod. Jedna z nich polega na tym, by uczynić X n+i zależnym zarówno od X nj jak i od X n- i , a nie tylko od X n. Wówczas długość okresu może nawet sięgać m2, ponieważ ciąg zacznie się powtarzać dopiero wtedy, kiedy nastąpi ( X n+\, X n+A+i) = ( X n, X n+i ) . John Mauchly w nieopublikowanej pracy przed­ stawionej na konferencji statystycznej w 1949 roku rozszerzył metodę środka kwadratu, korzystając ze wzoru rekurencyjnego X n = środek { X n-\ • X n-§). Najprostszym ciągiem, w którym X n+i zależy od więcej niż jednej z po­ przednich wartości, jest ciąg Fibonacciego ( 5)

X n+i = ( I n + I n_ i ) m o d m .

Ten generator był rozważany we wczesnych latach pięćdziesiątych; zazwyczaj daje on okres dłuższy niż m. Testy wykazały jednak, że liczby produkowane na podstawie wzoru rekurencyjnego Fibonacciego zdecydowanie nie są wystarcza­ jąco losowe, więc najbardziej interesującym aspektem ciągu ( 5 ) jako źródła liczb losowych jest to, że stanowi on dobry „zły przykład” . Można również rozważać generatory postaci

X n+1 = (X n + X n^k) mod m,

(6)

gdzie k ma stosunkowo dużą wartość. Ten wzór rekurencyjny wprowadzili Green, Smith i Klem [JA C M 6 (1959), 527-537], którzy oznajmili, że dla k < 15 ciąg nie przechodzi „testu odstępów” , opisanego w punkcie 3.3.2, chociaż dla A: = 16 wynik testu był satysfakcjonujący. Znacznie lepszy rodzaj generatora addytywnego wynaleźli w 1958 roku G. J. Mitchell i D. P. Moore [praca nieopublikowana], którzy zaproponowali dość niezwykły ciąg zdefiniowany wzorem X n — ( A n_24 4“ X n^.55) mod m,

n ^ 55,

( 7)

gdzie m jest parzyste, zaś X q, .. . , ^54 to dowolne liczby całkowite, nie wszystkie parzyste. Stałe 24 i 55 w tej definicji nie zostały wybrane losowo; są to specjalne wartości definiujące ciąg, którego najmniej znaczące bity, (X n mod 2), mają okres długości 255 — 1 . Okres ciągu ( X n) musi zatem być przynajmniej równie długi. Z ćwiczenia 30 wynika, że ciąg ( 7 ) ma okres długości dokładnie 2e” 1(255 - 1), jeśli m — 2e.

INNE METODY

3.2.2

29

Na pierwszy rzut oka może się wydawać, że równanie ( 7 ) nie najlepiej nadaje się do implementacji maszynowej, ale w rzeczywistości istnieje bardzo efektywny sposób generowania tego ciągu z użyciem listy cyklicznej. Algorytm A ( Generator addytywny). W komórkach pamięci Y [ 1], Y [ 2], .. . , y[55] są początkowo zapisane wartości, odpowiednio, A 54, X 53, . . . , X q ; j jest początkowo równe 24, zaś k jest równe 55. W kolejnych przebiegach tego algo­ rytmu na wyjściu będą pojawiały się liczby X 55, X 56, . . . . A l . [Dodawanie] (Jeśli mamy właśnie w tym punkcie wypisać X n, to Y [ j ] jest teraz równe A n_ 24, a Y[k] jest równe X n„ 55). Przyjmij Y[k\ (Y[k\ + Y [ j ] ) mod 2e i wypisz Y[k\. A 2 . [Przesunięcie] Zmniejsz j i k o 1. Jeśli teraz j = 0, to przyjmij j +— 55; w przeciwnym razie, jeśli k = 0, to przyjmij k otrzymując procedurę lepszą od metody ad hoc wspomnianej przy podsumowaniu testu x 2* (Oznacza to, że istnieje lepszy sposób postępowania niż wykonanie trzech testów i spraw­ dzenie, ile wyników było „podejrzanych” ). Przypuśćmy, że wykonaliśmy, po­ wiedzmy, 10 niezależnych testów x 2 na różnych fragmentach ciągu losowego, otrzymując wartości Vi, 1^, .. . , Vio. Linia postępowania polegająca na po­ liczeniu, ile spośród wartości V jest podejrzanie dużych lub małych, nie jest najlepsza. Okaże się ona skuteczna w skrajnych przypadkach, a bardzo duże lub bardzo małe wartości mogą oznaczać, że ciąg przejawia zbyt wiele lokalnej nielosowości; ogólnie jednak lepiej utworzyć dla tych 10 wartości dystrybuan­ tę empiryczną i porównać ją z teoretyczną, otrzymaną na podstawie tabeli 1 . Dystrybuantą empiryczna daje jaśniejszy obraz wyników testów x 2> a staty­ styk K^0 i K w wyznaczonych z uzyskanych wcześniej wartości x 2 można by właściwie użyć jako symptomów sukcesu lub porażki badanego ciągu. Dla 10 czy nawet 100 wartości te obliczenia można bez trudu wykonać ręcznie, sto­ sując metody graficzne. Jeśli wartości V jest więcej, niezbędna może się oka­ zać komputerowa procedura obliczania dystrybuanty rozkładu chi-kwadrat. Za­ uważmy, że wszystkich 20 obserwacji na rysunku 4(c) mieści się między pozio­ mami 5 i 95 procenty więc żadnej z nich z osobna nie zakwalifikowalibyśmy jako podejrzanej; sumaryczna dystrybuantą empiryczna jest jednak odległa od właściwej.

56

LICZBY LOSOWE

3.3.1

Ważną różnicą między testami KS a chi-kwadrat jest to, że test KS stosuje się do rozkładów, których dystrybuanty nie mają skoków, podczas gdy test chi-kwadrat stosuje się do rozkładów o dystrybuancie złożonej z samych skoków - kawałkami stałej (wszystkie obserwacje są podzielone na k kategorii). Obszary zastosowań obydwu testów są zatem różne, chociaż można zastosować test x 2 również wtedy, kiedy dystrybuantą F ( x ) jest ciągła, jeśli podzielimy jej dziedzinę na k części i pominiemy zróżnicowanie w każdej z nich. Jeśli na przykład chcemy sprawdzić, czy można przyjąć, że wartości ŁĄ, f/2, Un zostały wybrane z przedziału od zera do jedynki zgodnie z rozkładem jednostajnym, tzn. czy dystrybuantą ich rozkładu jest F ( x ) = x dla 0 < x < 1 , to naturalne jest zastosowanie tutaj testu KS. Moglibyśmy jednak również podzielić przedział od 0 do 1 na k = 100 równych części, policzyć, ile spośród wartości U wpada do każdej części, i zastosować test chi-kwadrat o 99 stopniach swobody. Jak dotąd niewiele jest wyników teoretycznych porównujących efektywność testów KS i chi-kwadrat. Autor znalazł kilka przykładów, w których test KS ujawnił niedostatki losowości wyraźniej niż test x 2>i kilka innych, w których to test x 2 dał wyraźniejszy wynik. Jeśli na przykład 100 wzmiankowanym wyżej kategoriom nadano numery 0, 1, . . . , 99, a odchylenia od wartości oczekiwanych są dodatnie w przedziałach od 0 do 49, ale ujemne w przedziałach od 50 do 99, to dystrybuantą empiryczna będzie znacznie odleglejsza od F ( x ) , niż wskazywałaby na to wartość x 2- Jeśli jednak do­ datnie odchylenia występują w przedziałach 0, 2, . . . , 98, a ujemne w przedziałach 1, 3, . . . , 99, to dystrybuantą empiryczna będzie znacznie bliższa F ( x ) . Widać stąd, że obydwa testy mierzą odchylenia o nieco innym charakterze. Dla 200 liczb, stanowiących dane do wykresów na rysunku 4, test x 2 z k = 10 dał wartości V równe 9.4, 17.7 i 39.3; zatem w tym konkretnym przypadku wyniki okazały się w pełni porównywalne z wynikami testu KS ( 16). Ponieważ test x 2 ma, z definicji charakter przybliżony i wymaga stosunkowo dużych wartości n, więc w przypad­ ku badania rozkładów ciągłych test KS góruje nad nim pod wieloma względami. Warto również zobaczyć, jak zmieniają się przedstawione na rysunku 2 oceny generatorów poddanych testom chi-kwadrat, jeśli zastosujemy do nich test KS. Wyniki tamtego badania opierały się na n ~ 200 obserwacjach wielkości „największy-z-f” dla 1 < t < 5, przy podziale na 10 kategorii o jednakowym prawdopodobieństwie. Dla tego samego zbioru obserwacji można obliczyć warto­ ści statystyk q0 i K 200 testu KS i przedstawić wyniki w tej samej postaci co na rysunku 2 (pokazując, które wartości statystyk KS wykraczają poza poziom 99 procent itd.); wyniki te są zamieszczone na rysunku 5. Zauważmy, że generator D (oryginalna metoda Lehmera) wypada tu fatalnie, podczas gdy testy chi-kwadrat na tych samych danych (rys. 2) nie wykazały żadnych uchybień; natomiast ge­ nerator E (metoda Fibonacciego) nie wygląda teraz najgorzej. Dobre generatory A i B przechodzą wszystkie testy z pozytywnym wynikiem. Przyczyny różnic między rysunkiem 2 i rysunkiem 5 to przede wszystkim to, że: (a) 200 to zbyt mała liczba obserwacji jak na skuteczny test; (b) kryteria oceny takie, jak „od­ rzucony” , „podejrzany” czy „trochę podejrzany” , są same w sobie podejrzane. (Nawiasem mówiąc, niesprawiedliwością byłoby zarzucać Lehmerowi użycie w latach czterdziestych „złego” generatora liczb losowych, w rzeczywistości bo-

3.3.1

OGÓLNE PROCEDURY TESTOWE

57

Zakres A

B

C

D

E

F

A

B

C

D

E

F

o

o ... .....

J

o

O

i

o

......

o1 o

tpiśiś



• • • • •

Rys. 5. Testy KS zastosowane do tych samych danych co testy y 2 na rysunku 2 . wiem sposób użycia przez niego generatora D był zupełnie poprawny. Komputer ENIAC był maszyną równoległą, programowaną za pomocą tablicy przełącz­ ników; Lehmer ustawił je tak, że jeden z rejestrów nieustannie mnożył swoją zawartość przez 23 (modulo 108 + 1), dając nową wartość co kilka milisekund. Ponieważ mnożnik 23 jest za mały, wiemy, że każda kolejna wartość otrzymana w takim procesie jest zbyt silnie związana z poprzednią wartością, żeby ciąg moż­ na było uważać za wystarczająco losowy. Faktycznie jednak odstępy czasu między kolejnymi dokonywanymi przez program odwołaniami do wartości w specjalnym rejestrze były stosunkowo długie i podlegały pewnym wahaniom. Efektywnym mnożnikiem było zatem 23fc dla dużych i zmiennych wartości k). C. Historia, bibliografia i teoria. Test chi-kwadrat wprowadził Karl Pearson w 1900 roku [PhiiosophicaJ Magazine, Series 5, 50,157-175]. Praca Pearsona jest uważana za jedną z podstaw współczesnej statystyki, wcześniej bowiem poprze­ stawano na ocenie graficznego przedstawienia wyników eksperymentów. W swojej pracy Pearson podał kilka ciekawych przykładów niewłaściwego korzystania ze statystyki. Wykazał również, że niektóre serie wyników uzyskiwane na ruletce (na której eksperymentował podczas dwutygodniowego pobytu w Monte Carlo w 1892 roku) były na tyle odległe od oczekiwanych, że szanse ich otrzymania na prawidłowym kole były jak jeden do 1029! Ogólne omówienie testu chi-kwadrat i obszerną bibliografię można znaleźć w przeglądowym artykule Williama G. Cochrana, Annals Math. Stat. 23 (1952), 315-345. Zajmijmy się teraz pokrótce teorią leżącą u podstaw testu chi-kwadrat. Nietrudno stwierdzić, że dokładna wartość prawdopodobieństwa tego, że Yi = yi,---Yk = 3/fe, wynosi

58

LICZBY LOSOWE

3.3.1

i T

J

S

* - * -

( I7 )

Jeśli założymy, że Ys ma rozkład Poissona i przyjmuje wartość ys z prawdopo­ dobieństwem (npa) Va

ys'i że zmienne losowe Y są niezależne, to ( Y i , . . . , Yk) będzie równe (t/i,..., yjt) z prawdopodobieństwem

n h

a Y± +

~nPs (nps) Va

.=1 V' 1 h Yfc będzie równe n z prawdopodobieństwem h yiH----- bVk—n s—1

i~nP*(nps)y*

e~nń r

ysl

nl

Jeśli narzucimy warunek, że Y\ + • * • + Y& = n, i przyjmiemy, że poza tym zmienne są niezależne, to prawdopodobieństwo, że ( Y i , . . ., Yk) = ( p i , ..., yk), jest ilorazem ^

e~nps (nps) Vs ^ j

^ e~ "n n^

co jest równe ( 17 ). Możemy zatem przyjąć, że zmienne losowe Y mają rozkład Poissona i są niezależne, z tym ograniczeniem, że ich suma jest ustalona. Wygodnie jest przyjąć oznaczenie ( . 8)

z, = wówczas V = Z\ Ą że

h Z£. Warunek Vj H

(- y fe = n jest równoważny temu,

-y/pi Zl + • * * + y/pk Zk = 0 .

( 19)

Rozważmy (k — l)-wymiarową przestrzeń S złożoną ze wszystkich wektorów ( Z i , . . . , Zk), dla których zachodzi ( 19). Dla dużych wartości n każde Z s ma w przybliżeniu rozkład normalny (zobacz ćwiczenie 1.2.10-15); zatem prawdo­ podobieństwo tego, że punkt należy do obszaru dz2 ... dzk w S jest w przybliżeniu proporcjonalne do exp ( —(z\ H h ^ )/ 2 ). (W tym miejscu wyprowadzenia metoda chi-kwadrat staje się jedynie przybliżeniem, właściwym dla dużych n). Prawdopodobieństwo tego, że V < v, wynosi teraz exP H z i + • • • + ZD / 2) dz2 • • - dzk I(z u ...,zk)es exP ( - ( ^ ? + • •' + 4 ) / 2) dz? •■•dzk

Ponieważ hiperpłaszczyzna ( 19 ) przechodzi przez początek układu współrzęd­ nych w przestrzeni k~wymiarowej, całkowanie w liczniku ułamka ( 20) przebiega

OGÓLNE PROCEDURY TESTOWE

3.3.1

59

po wnętrzu ( k — l)-wymiarowej hipersfery o środku w początku układu. Odpo­ wiednia zamiana współrzędnych na uogólnione współrzędne biegunowe o pro­ mieniu x 1 kątach u\, . . ., Uk- 2 przekształca ( 20) w

4 2^ e *2/ y f

2f(u>i,... ,Wk-2) dx dui ■■■duJk- 2

e - x 2/ 2x k~ 2f ( v 1 , . . . , w fc_ 2) d x d u i . . . dwk - 2

dla pewnej funkcji / (zobacz ćwiczenie 15); całkując względem kątów u\, . . . , U k - 2, otrzymujemy stałe czynniki, które się skracają w liczniku i w mianowniku. Ostatecznie dostajemy wzór

( 21 ) na przybliżone prawdopodobieństwo tego, że V < v, W wyprowadzeniu wzoru ( 21 ) używaliśmy symbolu x na oznaczenie promie­ nia wodzącego, podobnie jak uczynił to Pearson w swojej pracy; stąd właśnie wzięła się nazwa testu x 2* Podstawiając t = x 2/2, można wyrazić całki za pomocą niepełnej funkcji gamma, omówionej w podpunkcie 1.2.11.3:

To jest definicja rozkładu chi-kwadrat o k ~ 1 stopniach swobody. Przejdźmy teraz do testu KS. W 1933 roku A. N. Kołmogorow zaproponował test oparty na statystyce K n = y^n —rv'"Lmax IF n( x) - F(z)|' = max ( K + , K n ). / -r — l— rv^L•

( 23 )

W 1939 roku N. W. Smirnow opisał szereg modyfikacji tego testu, włącznie z zastosowanym przez nas osobnym badaniem K+ i K~ . Istnieje duża rodzina podobnych testów, ale statystyki K + i K ~ wydają się najdogodniejsze do oblicza­ nia na komputerze. Wyczerpujący przegląd literatury dotyczącej testów KS i ich uogólnień wraz z szeroką bibliografią można znaleźć w monografii J. Durbina, Regional Conf. Series on Applied Math. 9 (SIAM, 1973). Zanim zajmiemy się badaniem rozkładu K + i sformułujmy następujący, podstawowy fakt: Jeśli X jest zmienną losową o rozkładzie ciągłym z dystrybuantą F ( x ) , to F ( X ) ma rozkład jednostajny na przedziale od 0 do 1. Żeby to udowodnić, musimy jedynie sprawdzić, że jeśli 0 < y < 1, to F ( X ) < y z praw­ dopodobieństwem y. Ponieważ F jest funkcją ciągłą, F ( x 0) = y dla pewnego xq; zatem prawdopodobieństwo tego, że F ( X ) < y, jest równe prawdopodobieństwu tego, że X < xq . To ostatnie prawdopodobieństwo jest z definicji równe F ( x o), czyli y. Niech Yj = n F ( X j ) dla 1 < j < n, gdzie zmienne losowe X zostały uporządkowane jak w kroku 2 poprzedzającym równania ( 13 ). Wówczas Yj to niezależne zmienne losowe o rozkładzie jednostajnym na przedziale od 0 do n,

60

LICZBY LOSOWE

3.3.1

ustawione w kolejności niemalejącej Yj < Yi < • • • < Yn; a pierwsze z równań (13) można przekształcić na

K+ =

2= m a x (l -

Y l5 2 - Y2, . . . , n - Yn).

Dla 0 < t < n prawdopodobieństwo tego, że K + < t/y/n, jest zatem równe prawdopodobieństwu tego, że Yj > j — t dla 1 < j < n. Nietrudno wyrazić to za pomocą n-wymiarowych całek: Jra«

Jo

¿"ŁJ a «_ i

JO

dyn— 1i ...JaiP dj/i ------------ Fgr~---- , ^ n - l •••Jo ^2/1

, .

gdzie

>.

aj = m ax(j - t, 0).

^

( 24)

Wartość mianownika można wyznaczyć od razu: wynosi ona nn/n\. Faktycz­ nie, hiperkostkę o objętości nn, złożoną ze wszystkich wektorów ( 2/1, 2/2»• • • 5S/n)) takich że 0 < yj < n, można podzielić na n\ równych części, odpowiadających wszystkim możliwym uporządkowaniom wektorów y. Całka w liczniku jest trochę trudniejsza, ale można sobie z nią poradzić sposobem zaproponowanym w ćwi­ czeniu 17; w rezultacie dostajemy ogólne wzory

Pr( * -