As Joe pointed out, you're looking for a hash function. Generally, random functions are just hash functions seeded with the last returned number. So if Random() returned Hash(seed)=1234, a second call Random() would return Hash(1234), at so on.
If you're looking for a simple hashing function for pseudo random numbers, check out MurMurHash. I've implemented it in C# and can post it somewhere if you're interested. More detailed information of Perlin Noise, which uses such a hash function, can be found at here, and an implementation of it in C# is here.
All of this information came from a question I asked a year ago herehere on Stack Overflow. What you're looking into is called procedural content generation, so if you need more information, do a search for that. Happy terrain-generating!