This is a little complicated, but here’s what I would do:
* Create a matrix object and apply a random effector to it affecting position;
* Create a cloner with the same settings as the matrix effector (but without the aforementioned random effector applied);
* Create a random effector with no parameters checked and “affect weight” set to 100%, and apply it to the cloner;
* Create an inheritance effector referencing the matrix object and apply it to the cloner (check the “morph motion” box);
* In the inheritance effector’s falloff tab, set the weight to 0%;
So that’s the basic setup. By animating the inheritance effector’s strength, you will move the clones from the randomized position to the grid position.
The random effector affecting the cloner randomizes the weight of the of the inheritance effector; IOW, it determines how much strength the inheritance effector will have on the various clones.
About half way through the animation, I would animate the weight of the inheritance effector (falloff tab) from 0% to 100% at the end of the animation. That will ensure that you end up with a perfect grid at the end.