The way I do this is
step through each probability from high to low ( the high to low bit is important)
on each step I set the return value appropriately.
lets take your first example -
80% 60% and 30%
so you would step through these in high to low order
and lets say our percentage to check is 50%
so it would pass the first two (< 80 and < 60 ) but fail the third.
If you have 3 or 10 possibilities it makes no real difference (providing they are all different)
In your latest version you would need to take your (5 ?) possible % and pass them (hight to low) to a function that just does the above. This function would be probably be easier to write if you had a fixed number of possibilities (5,8,10, whatever) even if some of these possibilities were just padding.