Better, cheaper, more abundant random numbers
PRNGs and CPUs are stupidly fast these days. I&#x27;m not really convinced that the problem is abundancy of pseudo-random bits, not at least for simulations. A well written PRNG should execute at the same speed as a memset in fact (at least, for the creation of PRNG-bits before processing)<p>Massaging the bits into proper form: using modulus operator, requires like 80-cycles (aka: a division) on 5-year old CPUs and maybe 20-cycles on a very modern core (with the past 3 years, as Intel seems to have put a lot of work optimizing division). So the bulk of the time is on this massaging process actually.<p>--------<p>Even if the bulk of the CPU time is spent converting the uniformly random bits into usable integers (division &#x2F; modulus is really slow!!), or usable floats &#x2F; normal distributions or whatever... I still expect the typical core to handle 100-million pseudo random numbers per second... __per core__.<p>Seeding your PRNG with a true random seed every now and then will ensure large-scale randomness.<p>I think cryptographers might need something higher quality, but key-generation is quite uncommon, so you wouldn&#x27;t need to be doing millions-and-millions of keygens per second, would you?<p>Simultaions need lots of random numbers, but those random numbers don&#x27;t need to have entropy guarantees, but instead have weirder requirements (not only speed of generation, but also the ability to rerun your simulation... you actually want deterministic random-number-generators for simulations to verify your results). So in these cases, PRNGs are not only needed, but superior to a true RNG.<p>There&#x27;s also the weird case of quasi-random, a term I learned from the graphics community. You want your rays to be random-ish, but actually &quot;more uniform&quot; than actually random. Its a more pleasant randomish pattern to look at, leading to pleasant and artistic images (<a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Halton_sequence" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Halton_sequence</a>). Quasi-random raytracing is a so called &quot;Biased&quot; generator, because the physical light models are probably closer to true random. However, quasi-random sequences lead to far less noise in far less time &#x2F; samples, so they&#x27;re more useful in practice.<p>--------<p>Ultimately, our x86 CPUs today have &quot;true&quot; RNGs built into the RDSEED instruction, pulling entropy from some kind of physical circuit that&#x27;s highly sensitive to temperature conditions (thermal quantum noise generators inside of circuits. After all, heat is quantumly random as your electrons jump between states in the very small scale).