I was reading the Math.random() javadoc and saw that random is only psuedorandom.
Is there a library (specifically java) that generates random numbers according to
For most purposes, pseudo-random numbers are more than enough. If you just need a simple random number, ie. in 30% of the time do this, then a timestamp as a seed is what you want. If this has to be secure random number, for example shuffling a deck, you want to choose your seed a bit more carefully, there are good sources out there for creating secure seeds.
The reason for using seeds is to be able to "recall" the same sequence of random numbers generated by the algorithm. A very good scenario for that is when you are doing stochastic simulation on some sort and you want to repeat a particular experiment, then you simply use the same seed.
For a better PRNG than the one bundled with Java, take a look at the Mersenne Twister.