So, while the services you have mentioned are both providing relatively "discreet" randomness, while being publicly accessible, i.e. they don't display on a list all the random values that they have previously generated, I want to also point your attention to the existence of a so-called "public, verifiable randomness".
I am not sure what is your use-case, so please consider this with a grain of salt since it might not fit your needs at all.
What is public randomness?
What we call "public" randomness, is simply randomness that is meant to be public once "released".
This kind of randomness is typically useful to say "look, I got nothing up my sleeves, I didn't cheat when choosing the random value".
The range of usecases for such randomness are broader than one might think initially, but it is important to keep in mind that public randomness is meant to be accessible by anybody, so please do not use such randomness to seed any PRNG that is producing secret keys, nonces, TLS stuff, or anything sensitive like that.
What is verifiable randomness?
Verifiable randomness generated in a way that can be somehow "proven" to be safe. This typically includes:
- proof that it wasn't biased
- proof that it wasn't tampered with
- proof that it is properly "pseudo-random"
In general, verifiable randomness must carry some kind of proof that it was properly generated, for a certain definition of "properly".
So public, verifiable randomness is typically useful when you need to:
- run a lottery, without having the risk of being accused of cheating
- do an election or a sortition at random (think of Jury election, leader election for a consensus algorithm, etc)
- any case where you plan on revealing the randomness after having drawn it, and need to prove you didn't cheat.
Furthermore such randomness is typically found in smart contracts and public ledgers, since it allows to increase the trust in the random value that it was properly generated in a pseudo-random way. However care must always be taken for such system not to use the public randomness in any way that could enable "front-running" by the miners or by bots: as soon as the random data is public, anybody can see "the winning lottery ticket", so to say, and so could submit a winning transaction if this is still possible at the time of production of the randomness. This is something to keep in mind, you typically want to "block" participation a few blocks before the actual public randomness is generated.
Services providing such verifiable public randomness
There are, as far as I know, mostly 2 public services available. (I'm not counting the many VFDs schemes that are flourishing lately)
NIST very own Random Beacon project, currently in its v2 is leveraging secure hardware, including HSMs, plus a combination of multiple RNGs to produce verifiable, public randomness. See
https://beacon.nist.gov/home for more details.
This prototype implementation generates full-entropy bit-strings and posts them in blocks of 512 bits every 60 seconds. Each such value is sequence-numbered, time-stamped and signed, and includes the hash of the previous value to chain the sequence of values together and prevent even the source to retroactively change an output package without being detected.
You can easily query their randomness using HTTP endpoints:
They also have a draft report with more details.
drand and the League Of Entropy are running a public network relying on threshold BLS so that it suffices that any 12 of their 23 nodes are online for it to continue working and producing reliable public, verifiable randomness.
You can also easily query their randomness using HTTP endpoints:
They have the details of their scheme on their website.
So in case you need "public", "verifiable" randomness, these are two options :)
But if you need to generate any kind of secret data using your PRNG, be careful:
DO NOT USE PUBLIC RANDOMNESS TO SEED IT.
For most usecases, as Gilles explained in his answer, relying on your operating system PRNG is sufficient and more secure than seeding your own PRNG with random data.
Also, be aware that the PRNG you are using, even if seeded with properly random data might still not be good enough for cryptographic use! E.g. it's fairly easy to reverse Java Random PRNG because it's a plain LCG: https://crypto.stackexchange.com/a/51690/29574