Yeah, normally people use fractal based heightmaps that are converted into terrain. Such an algorithm is fairly simple to implement, and I believe there are a few good examples at roguebasin. Essentially, you generate a fractal heightmap and then decide what ranges of the map will be what type of terrain. Maybe below a certain number is ocean, and above a certain number is mountain, and inbetween there are all sorts of land types like forest and desert.