I've recently been working on a 2d RPG adventure game in Java. I have world loading among other things and I want to use procedural generation for the landscape of the game world.

I have had no previous experience with procedural generation so this was quite a learning curve for me and I feel I have done fairly well. I finally managed to make a Perlin noise demo with help from this article here and I'm fairly happy of the result (that demo uses a persistence of 1 and 8 octaves).

Here is the code for my Perlin noise. It's very fast to generate compared to some of the other algorithms I've tried. Im using a linear interpolate method because I don't notice the difference between a cos one except for the fact that linear is MUCH quicker...

First off, can someone please tell me if the noise I have generated if suitable for random world generation or if it's not, can they give me some tips and/or links to good examples.

and second, can someone please tell me a good place to start for turning that Perlin noise into a game world. I am using a tile based system and i plan on having mountains, sand dunes, forests and cities (they wont be randomly generated but they will have a random location in the world based on some placement parameters).

Procedural terrain generation is an interesting topic, I'm working on a 2D MMORTS and I used the Square-Diamond Algorithm for terrain creation, I am quite happy with the result. This is a screenshot of the terrain generated for my game.

How you translate your noise functions to a game world depends on a great many factors. Does a cell or unit in the noise map translate to a single tile in the world, or does it translate to a sub-map or region? What sorts of characteristics can a tile or region have? Typically, you're going to use more than just a single layer of noise. As an example, in this journal post, I use several layers of noise and turbulence denoting the shape of an island, elevation and roughness of terrain, aridity, etc... and translate units into tiles in a simple tile map:

Translated into tiles:

This is a very simple example. You can get more complex depending on your needs. All sorts of information can be simulated using noise maps: elevation, placement of regions, density of vegetation, etc... Add a few simulated modeling processes (erosion, weather patterns) and you can come up with some pretty complex worlds.

I'd also suggest looking into Ken's followup version: "Simplex Noise" as it runs considerably faster, fixes a couple of visible pattern issues in the original and is much easier overall. From there, another source of information would be the book from the masters themselves: http://www.amazon.com/Texturing-Modeling-Third-Procedural-Approach/dp/1558608486/ref=sr_1_1?ie=UTF8&qid=1327285046&sr=8-1 It's an older book but given Perlin, Musgrave and Worley talk about how they use noise and variations, some of the helper functions listed in Worley's section I believe (bias/gain being two of my favorites) are excellent starting points for getting a better understanding of how to fiddle with the output of noise functions.