Algoritmo aleatório de geração de mapa de telha 2D

Alguém pode me dizer uma maneira de gerar estruturas insulares ou estruturas de montanha, como em minecraft?

Eu só estou procurando por uma teoria adequada para essa geração de forma aleatória, mas deve manter um padrão base definido.

como: as ilhas devem ser arredondadas, mas variar em forma e escala (min / max largura e altura).

ou: os rios não devem ser linhas retas, eles devem ter curvas e uma largura aleatória.

ou ainda: gerando algum tipo de floresta, onde as árvores são colocadas de forma que o usuário ainda possa andar pela floresta (isso é simples, eu acho, basta dizer que alguns blocos em torno de uma árvore devem ficar em branco, se o código tentar colocar mais árvores ao redor do último)

Que tipo de matemática posso usar para fazer essas coisas?

Eu ficaria feliz por alguns links para tutoriais ou referências. Pesquisei por toda a web por horas, mas tudo que consegui encontrar foram alguns livros para comprar, como "matemática do jogo" ou algo assim, mas meu orçamento está definido para zero.

EDITAR:

Primeiro de tudo, me desculpe pelo meu mau inglês.

Secundário, quero agradecer a todos vocês por suas respostas. Essas são ótimas referências e eu vou gastar muito tempo para aprofundar isso.

questionAnswers(3)

yourAnswerToTheQuestion