You can easily implement it by using this:
DateTime.Now.Subtract(dictAbilityLastUse[SNOPower.Barbarian_WarCry]).TotalMilliseconds >= (new Random().Next(3000,20000))
Add this for each skill you want (inside the if clause) and change the SNO to be the relevant skill SNO and the random numbers to represent the min and max time between casts.
OFC make sure that there is an OR !HasBuff(SNO....) so if it lost the buff it will auto cast even though the timer doesn't fit.