MDA takes a grid of size (2n +1)² and iterates over it with n different resolutions starting with the original size of 2n - 1 and then dividing it into 4 pieces with resolution 2n-1 - 1 until the whole grid is covered. Before the first iteration, random values are assigned to the 4 corners of the grid.
During each iteration, values are found for the point in the middle and the points half way between the adjacent corners of the currently observed piece of grid. The new values are found by averaging the values of the adjacent corners values with a small random offset which gets progressively smaller as the resolution gets lower.
Notice how sometimes MDA generates a lot of noticeable vertical and horizontal artifacts which make the generated pattern seem a lot less random.
Andreas Sepp, 2016