Step 1:
Write ( or locate) a crazy random table for something that happens to the PCs. It should have at least 20 results. Like: (A) "Result of attempt to sell stolen goods" or (B) "accidental potion creation side effect" or (c) "drunken dungeoneering mishaps". It should have good and bad results, and they can be mixed together.
Step 2:
When the time comes to do that thing, have the PC roll a (roll under) d20 check on the relevant attribute. For example: for chart A above this'd be charisma, for B it'd be intelligence, for C it'd be dexterity.
Step 3:
Have the PC roll on the crazy random chart.
Step 4:
Now look at the result of the attribute check. If it was a success, then do like this: If the player rolled under his/her ability score by (say) 4, then the PC can choose the result s/he rolled during step 3 OR any result from the chart that's within 4-up or 4-down from whatever s/he rolled. Like if the result of the random table roll was 15, then the player can choose any result from 11-20.
If the result was a failure, determine by how much it was a failure. This is the window from which the DM gets to choose which thing happens. If the attribute check failed by, say, 2, and the random chart roll was a 13, then the DM can choose any result from 11-15.
_
This obviously takes a little longer than just rolling on the chart straight up, but the interaction and tension it creates can be a lot of fun--especially when it's done all out in the open.
It also makes it easy to draw up random charts at will and have the results be relevant to the PC profile--without having to come up with an ability-score related modifier for every subsystem.