RANDU je generátor lineárních kongruentních pseudonáhodných čísel , který se začal používat v 60. letech 20. století. Je určena recidivou :
kde je liché .
Pseudonáhodná čísla se počítají takto:
Všeobecně se má za to, že tento algoritmus je jedním z nejméně promyšlených generátorů pseudonáhodných čísel, které byly kdy navrženy, protože selže ve spektrálním testu , když počet měření překročí 2 [1] [2] .
Důvodem volby parametrů generátoru bylo, že v rámci celočíselné 32bitové strojní aritmetiky jsou efektivně prováděny modulo operace , zejména násobení libovolného čísla . Zároveň má tato volba i zásadní nedostatek. Uvažujme následující výraz (budeme předpokládat, že všechny operace se provádějí modulo ):
odkud, rozšířením kvadratického faktoru, dostaneme:
což zase ukazuje přítomnost lineárního vztahu (a tedy úplné korelace ) mezi třemi sousedními prvky sekvence:
V důsledku korelace se body v trojrozměrném prostoru, jejichž souřadnice získáme tímto algoritmem, nacházejí na relativně malém počtu rovin (v daném příkladu na 15 rovinách). [3]
Příklad pseudonáhodné sekvence generované algoritmem RANDU s počáteční hodnotou :
jeden 65539 393225 1769499 7077969 26542323 95552217 334432395 1146624417 1722371299 14608041 ... 134633675 1893599841 1559961379 907304297 2141591611 388843697 238606867 79531577 477211307 jeden
Už jeho samotný název – RANDU (podobně jako „random“ – „random“ – Approx. red. ), může u mnoha informatiků vyvolat zděšení v očích a žaludeční křeče! [čtyři]
Původní text (anglicky)[ zobrazitskrýt]…jeho samotný název RANDU stačí k tomu, aby vyvolal zděšení v očích a žaludcích mnoha počítačových vědců! [5]
Jeden z nás vzpomíná, že kdysi dostal grafický obrázek „náhodné“ sekvence, skládající se pouze z 11 rovin. V reakci na to konzultant programování počítačového centra uvedl, že generátor náhodných čísel byl použit nesprávně: "Garantujeme, že každé číslo je náhodné samo o sobě, ale nezaručujeme, že náhodných je více než jedno." Zkuste to pochopit.
Původní text (anglicky)[ zobrazitskrýt]Jeden z nás si vzpomíná, jak vytvořil „náhodný“ spiknutí pouze s 11 rovinami a programový konzultant jeho počítačového centra mu řekl, že zneužil generátor náhodných čísel: „Garantujeme, že každé číslo je náhodné jednotlivě, ale nezaručujeme, že více než jeden z nich je náhodný." vyřešit. [6]