If you want to keep things more random than the A/B/A/B/A/B answer, you could skewer the odds of your randomly generated A or B towards the group with the least members.
For example, if Random returns a number between 0 and 1, you would have something along the lines of:
variation = if(Random() > 0.5) { variationA } else { variationB }
If you change this to (nrOfA/B = times A/B was chosen):
variation = if(Random() > (nrOfB / (nrOfA + nrOfB))) { variationA } else { variationB }
Then the likelyhood of A or B being chosen will depend on how big they are compared to the other. The bigger B is compared to A, the bigger the chance A will be chosen and vica versa.