If you don't want to muck around too much with noise you can check out the mid-point displacement algorithm (described here: http://www.gameprogrammer.com/fractal.html with height-map source here: http://pastie.org/1927076 ). Otherwise (as the above posters can tell you) you can check out perlin noise ( http://mrl.nyu.edu/~perlin/noise/ ) and use a simple fractal algorithm like fractional brownian motion like so:
float fBm( Vector3 vertex, float H, float lacunarity, int octaves )
{
float value = 0.0;
for (i=0; i<octaves; i++) {
value += noise(vertex) * pow( lacunarity, -H*i );
vertex *= lacunarity;
}
return value;
}
to create cool organic patterns. Creating a height-map is as simple as using the result of an algorithm like that as a color and setting a pixel on your desired map to that color...
Good luck.