Maybe another way to ask the question is: what can't computers do?
Computer generated numbers are never completely random, but one could argue that real life isn't completely random either, so it's not really an issue. Computers also have trouble with rounding errors. You can use 64 or 128 bits to approximate the square root of 2, but you'll never get it exactly.
I'm just wondering where the limitations lay. In hardware? In software?
It depends what you're trying to do. If you're trying to do something accurately, it's 99% hardware. A lot of the ideas of computation have been around for hundreds of years. The fourier transform is an example of this. A fourier transform is when one wave can be expressed as an infinite series of component waves. What does that mean? It means you can take a single wave, like a single-speaker representation of a song, and it can be broken down into all of its individual parts. It could have thousands of component waves, all of them at different frequencies and amplitudes. We've had the math to do this for more than 150 years, but it was useless information because we couldn't do anything with it. It might take months or years to do one of these calculations by hand. With proper hardware, we can finally do things we've been wanting to do for a very long time. With the right hardware, you can test thousands of light absorption frequencies at the same time. You can test thousands of sound frequencies at the same time.
FT spectroscopy. A lot of medical technology is advancing due to hardware. We've had ideas floating around for a long time about how things could be tested, but there was no way to actually do the tests. The person is dead before the test results come back if it takes a year to calculate something accurately.
If you're just looking for rough approximations of things, a lot of great work has been done on the software side. This usually relates to graphics. You don't want the bank to estimate how much money is in your bank account, but it's acceptable to estimate what a video game looks like. A famous example is the fast inverse square root calculation. It's not completely accurate, but it's close enough.
http://en.wikipedia.org/wiki/Fast_inverse_square_root
Transform and lighting was another. Instead of drawing a 3D world as a bunch of overlapping layers, which is how real life works, first determine which things would be visible and only draw those things. In the world of graphics, putting your head in the sand really does make the world go away.
There are still some software optimizations out there to be discovered, but my guess is that most of them have already been found. We're mostly held back by hardware.