Der Fehler wurde schon mehrfach genannt. Es liegt eindeutig am Randomize. Bei den heutigen schnellen Rechnern erwischt man (zumindest in Lazarus) zwei mal den gleichen RamdomSeed-Wert. Damit werden immer zwei mal die gleichen Zufallswerte gezogen. Das erklärt Dein Ergebnis.
Beweis (so funktioniert es):
Delphi-Quellcode:
PowerupGenerator;
Sleep(10);
PowerupGenerator;
ub60