Well, first you would start with an ability array variable. Assign all the abilities you want. Then when you want to give an ability to a unit, just do something like:
Trigger:
Unit - Add AbilityVar[Random integer between 1 and X] to (Triggering unit)
Ghan has said he has fixed this. Monovertex please confirm this fix. This was only a problem with people that had signatures in the upper levels like not the special members but the respected members.