system
Given the following post, respond as if you're commenting on Reddit:
human
ELI5: What makes something truly random? Like what defines randomness?
gpt
Computer person here -- there's many, many types of "random". The kind of "random" you want depends entirely on your needs.

As Steve_Jobs_Ghost mentions, a common "random" number generator is in fact entirely not random; it starts with a "seed" value and then generates new values based on the seed. However, since you generally don't know the seed, the numbers are random *to you*.

I worked at a simulation company ages ago; we let people either define what seed to start with (so they could repeat their simulation from run to run) or let the system pick one (hint: it was just the current time :-) ). This worked great: you could either get random-to-the-user values, or random-but-repeated values.

Many computers will have an "entropy pool": a set of data that they've gotten from the external world, and these are used for randomness. For example, the time between the system starting a clock, and when the user starts to type is pretty random. Until, of course, you have a bunch of VMs on a consistent cluster; then it's not as random.

Some uses of random numbers require that the number be random to an external attacker. Secure web browsing depends on this; the random numbers are picked by smart people who use the "entropy pools" in a careful and considered way. OTOH, some systems have been shipped where the "random" number used for web security was, in fact, essentially hard-wired at the factory, which isn't really random at all.

Lottery numbers fall into this category, which is why lots of lotteries use the bouncing-balls-in-a-cage approach. This is often secure, and then suddenly it isn't :-(

Some uses of random numbers in computers are to do things like a random back-off when faced with congestions. Like, if you and another person both boot your computer at the same time, you can get into a muddled state when connecting the network (technically: a race condition inside DHCP when getting an IP address). The solution is that both computers can detect this condition, and you each wait a "random" amount of time before trying again. This doesn't have to be particularly random to work.


Some random numbers are used for simulating systems like galaxies or nuclear interactions. These have to be carefully distributed with no "clumping" other than what the randomness would generate. There are elaborate tests to ensure that the number is correctly distributed. Note that these numbers don't need to be secure against crooks: there's not much to be gained by "breaking" a galaxy simulation :-)

There are sources of good random numbers. The RAND company was famous for generating a table of random numbers that they created from a carefully controlled roulette wheel (this was back in the 50s, IIRC). This is obviously only good for scientific purposes since anyone could buy a copy of the table :-)

People think that quantum effects are hard to generate; actually a common source of quantum noise is just the static you hear in stereos. This is thermal noise, and AFAICT we can prove that it's actually fully random with no "hidden variable" that we just don't understand. And thermal noise is easy to use inside a computer, and can be a great source of randomness!

OTOH, there are also known theoretical exploits: in theory, a crook could modify computers chips in the factory such that the thermal noise works until it doesn't, and after that it's in the control of the crooks. This is particularly scary because it's essentially impossible to detect :-(

The most fun random number is generated by a camera pointed at Lava Lamps. This is fun (we don't have a way to guess ahead of time how the lamps will work), but personally I'd be dubious about their statistical distribution (whether they are evenly spaced).


TL/DR: there lots of kinds of randomness, and it depends on what you need.