[HR] Generating Stats with playing cards

This is another house rule I have used for years in Classic D&D to good effect.
DISCLAIMER:
This house rule fixes a very specific problem - the player who cannot accept dice-rolled stats that are anything less than Top xx% of possible results (some players are OK with anything better than average; others insist on getting a Top 10% result).
If you don’t have any players like this (They love a challenge!), or if you don’t mind dealing with their whining for more chances to roll stats, or you don’t mind watching them like a parent watching their toddler eat all his peas, then you don’t need this rule. Unfortunately I do have an (otherwise excellent) player who exhibits this tendency, and this is my fix.
THE RULE:

  1. Starting with a desk of playing cards, remove three sets of Ace - 6. Suit doesn’t matter*. Shuffle all 18 cards.
  2. Deal three cards to each stat in order.
  3. Note the sum of each triplet. Ace = **
  4. Allow one “swap” of any stat into your Prime Requisite (or use the rules for adjusting Prime Requisite value in the ACKS Core Rules).
    *Unless you want it to! For a fun option, maybe your Prime Requisite must have at least one Spade, or Heart, whatever. “15 Str? Too bad - all Diamonds and Clubs” I have never used this option though; just throwing it out there.
    **So what does Ace equal? Up to the Judge depending on the campaign he wants. A “hard 3d6” Judge would make Ace = 1. A Judge looking for a more Supers game would set Ace = 6. To get numbers closer to the mean you could set it to 3 or 4.
    WHY THIS WORKS:
    I think this is better than straight dice rolling (for certain kinds of players) because there’s no way to “get lucky”. Any collection of 6s in one stat means lower cards dealt elsewhere. It’s self balancing.
    But it’s also better than point buy systems because the shuffled deck makes it a bit random too. There’s no optimizing your stat buy or picking your class ahead of time. You still have to accept that you got dealt a 15 Int and 6 Str, and work with that for the character.

Feedback welcome.