p(tree_goes_here) > random()
And then randomly placing various tree models according to the RNG output, your random events produce a story. You should be able to look at a series of mountains and trace it back to tectonic events, then if one mountain has a patch of trees missing, you should be able to see that there were various events that either removed the trees (eg: some local civilization) or a Tunguska-like meteor strike cleared a path and made the soil infertile for growing more trees.If one did this, such a game would have value not only from the game itself but it might open up a whole subculture of archaeologists who go from planet to planet studying the evidence to piece together the events that led to the planet's present state.
Otherwise, you're right. Each world would end up being different much in the same way that listening to static noise is different each time you hear it.