On it's own it's very hard for computers to be random. Early video games that were fairly primitive would use certain things like how long it took you to press buttons, or your current points or other fairly variable things based on user input to determine randomness.
Modern computers basically do the same thing, just that there is way more data to work with such as various data flying around, network stuff etc, and it can be processed much faster. The best random number generator will use physical outside data though, but even then you want your source to be able to generate a lot of random data. So something like temperature and humidity may not be enough as it does not change fast enough. I heard of checking RF and even ionizing radiation levels in combination with other data. You want your sources to be unpredictable too especially in a secure application as you don't want previous or future values to be predictable. Ex: a login system, you don't want your random algo to be so crappy that someone can figure out the last or the next session ID based on their own.
RSA has that downpath with their RSA tokens. It's suppose to be near impossible to predict the next or previous token based on reading a bunch of them. Otherwise you could technically compromise someone by simply reading say, 10 of their numbers off their token sitting on their desk. Then figure out what the number will be at a specific time. There's a crazy amount of brains that go into ensuring that can't be done. That would be a pseudo random algorithm and not fully random though.