It’s a mix of a bunch of different things. The island shape is created using multiple layers of Perlin Noise. Then, the type of terrain in each tile in each area is placed using a weird algorithm I made that’s like a mix between a drunkard-walk algorithm and a flood-fill algorithm. Next, rooms of different types (there are a bunch of different kinds of rooms) are scattered throughout the island. The insides of the rooms are predesigned, but have random segments in them. Finally, I use an A* algorithm for the tunnels connecting everything.
There’s a bunch of other stuff scattered around through this, but that’s the basics of the island shape. The actual monsters, treasure, etc, are usually determined by the rooms.