Question: How are random numbers generated.? How do languages such as java etc generate random numbers, especially how it is done for GUIDs.? i found that algorithms like Pseudorandomnumber generator uses initial values. 

But i need to create a random number program, in which a number once occurred should never repeats even if the system is restarted etc. I thought that i need to store the values anywhere so that i can check if the number repeats or not, but it will be too complex when the list goes beyond limits.?

Answer: 
There are a lot of ways you could generate random numbers. It's usually done with a system/library call which uses a pseudo-number generator with a seed as you've already described.

But, there are other ways of getting random numbers which involve specialized hardware to get TRUE random numbers. I know of some [poker sites](http://www.ultimatebet.net/help/random) that use this kind of hardware. It's very interesting to read how they do it.
I understand that you are seeking a way to generate random number using C#. If yes, [RNGCryptoServiceProvider](http://msdn.microsoft.com/en-us/library/system.security.cryptography.rngcryptoserviceprovider.aspx) is what you are looking for.

[EDIT]

If you generate a fairly long number of bytes using RNGCryptoServiceProvider, it is likely to be unique but there is no gurantee. In theory, true random numbers doesnt mean to be unique. You roll a dice 2 times and you may get head both the times but they are still random. TRUE RANDOM!

I guess to apply the check of being unique, you just have to roll out your own mechanism of keeping history of previously generated numbers.