Assuming the units travel at the same speed, they will reach each other by walking half of the distance shown in the picture by the diagonal line. But you could make it less than half like 0.45f so they get a little space between them rather than moving right on top of each other. For each unit pair, subtract unit1's position by unit2's position. This gives you the velocity unit2 would travel to be at unit1's position. Multiply that vector by 0.45f to calculate the meeting point. Inverse the vector, (that is attach a minus (-) to it, or multiply by -1) to get the vector relative to unit1.
The worldspace coordinate for these two target positions will be unit1.Position + unit1.vectorToUnit2 and unit2.Position + unit2.vectorToUnit1. Move the units positions from their origin towards this position little by little over the course of the simulation using perhaps the waypoint navigation sample (if you want them to go in an indirect line) or by simply lerping/smoothstepping the origin position and the target position by time to go straight. Lerp is a direct interpolation between the two vectors, Smoothstep will round off the beginning and ending a little bit, which would cause the units to start slow, pick up speed, and then slow down again just before they stop.
As for setting up the original positions, for each side you'll have to set up a starting position for the first unit in the line. Then in a for-loop you set each unit to that vector plus (i * UnitSpacing) on the Y coordinate, or X if you want horizontal lines.
To permute the numbers you'll need to make use of the Random class. An algorithm to permute a set is fairly straightforward, but as you might have guessed from the codeless format of this post, I'd really like you to try it out the solution yourself before I dump an answer on you.