Software Zufallsgeneratoren (PRNG): Software RNGs verwenden mathematische Algorithmen, um nach dem Zufallsprinzip Zahlen zu generieren. Die Algorithmen werden dabei mit einem Kernwert initiiert, der das Ergebnis wiederkehrender Computer-Aktivitäten ist, z. B. Tastenfolgen, ablaufende Prozesse, die Uhr im Computer oder Mausbewegungen. Es ist jedoch extrem schwierig, mit einem vollkommen zufälligen Kernwert zu arbeiten, da diese Abläufe meist Kernwerte mit nur einer kleinen Reihe von Werten produzieren.
Die Herausforderung bei Software-RNGs besteht darin, dass die Abfolge der Zahlen, die auf dem Kernwert basieren, vollkommen deterministisch ist, da ihre Erzeugung auf einem Software-Algorithmus basiert. Wenn also der Kernwert vollkommen zufällig wäre, so würden die Zahlen des RNG vorhersehbar sein, wenn jemand herausfindet, nach welchem Algorithmus sie erzeugt werden. Daher sind die von Software-RNGs produzierten Zahlen nicht vollkommen zufällig, sondern pseudo-zufällig. Die Software-RNG, die sie erzeugen, werden als Pseudo-RNGs (PRNGs) betrachtet.
Hardware Zufallsgeneratoren (TRNG): Hardware RNGs verwenden keine Kernwerte, da von Hardware generierte Zufallszahlen keine errechneten Werte darstellen, da sie nicht von wiederkehrenden Algorithmen abgeleitet werden. Es handelt sich bei durch Hardware generierten Zufallszahlen um digitalisierte Momentaufnahmen eines natürlich auftretenden Rauschgeräusches. Da dabei kein Algorithmus und keine wiederkehrende Zahlensequenz auftreten, wäre ein Hacker, auch wenn er eine Zahl bestimmen könnte, nicht in der Lage, künftige Zahlen daraus abzuleiten. Aus diesem Grund gelten Hardware RNGs als echte Zahlen-Zufallsgeneratoren (TRNG = True Random Number Generator).