How would I go about procedurally generating mountains?

Hi. I'm procedurally generating a two dimensional terrain that currently only consists of areas of grass and areas of forest, designated by lighter and darker greens. I'm using the perlin noise script found here to do the grass and trees, but it appears mountains will need a different technique.

My first attempt to generate mountains was to use Perlin noise as well, but I can't get it to behave properly. My "mountains" look like scattered noise. Which is fine and good for forests, but isn't good when you're looking for the ridge-like formation of a mountain range.

What other options besides using Perlin noise are there to procedurally generate mountains? Could I modify a river-generating algorithm to give me the ridge-like character of mountain ranges?

Thanks, Elliot Bonneville.

You could take a look at Chapter 1. of GPU Gems 3:

Generating Complex Procedural Terrains Using the GPU


Edit:

You could also look at the Terrain Toolkit to see how heightmaps are produced procedurally there.

You can use the Diamond-square algorithm to create a height map as a function of horizontal position. Or quite possibly you could use an external tool like Terragen to obtain more realistic terrain.