/dev/randomfile (the limited blocking random generator) returns entropy from the kernel's entropy pool (collected noise) and blocks when the entropy pool is empty until additional environmental noise is gathered.
/dev/urandomfile (the unlimited non-blocking random generator) returns entropy from the kernel's entropy pool or a pseudo-random data, generated from previously collected environmental noise, which is also unpredictable, but is based on secure entropy "stretching" algorithm.
/dev/urandomsources of randomness are secure enough for most cryptographic purposes and most cryptographic libraries access them internally.
System.Security.Cryptography.RandomNumberGenerator.Create()from .NET Framework or .NET Core.
window.crypto.getRandomValues(Uint8Array)for client side (in the Web browser) or
crypto.randomBytes()or external module like
node-sodiumfor server-side (in Node.js).
Math.random()or similar insecure RNG functions for cryptographic purposes!