This projects implements a ChaCha20-based cryptographically secure pseudo-random number generator (CSPRNG), very similar to the one found in the Linux kernel's /dev/urandom implementation. Entropy is initially seeded via loop timing jitter (via the method first presented here https://scratch.mit.edu/projects/658943245/ ), which generates a 256-bit long ChaCha20 key. On each iteration, some additional entropy is mixed in via the "pick random" block. The "pick random" block is backed by the browser's Math.random(), which is typically a non-cryptographically secure source. We simply use it as an additional source of entropy - so it does not weaken our CSPRNG. One caveat to be aware of, is that if you save the project after generating some random numbers, then the RNG state will be exposed in the projects various state-storage lists. I should probably add a block to clear everything sensitive... Normally I try to optimise my cryptographic operations for maximum performance, but this time I thought it would be more useful to optimise for code size (since you don't generally need to generate secure random numbers very quickly)