You can do this using rand()and then using the total amount. Assuming they are up to 100%:
select t.*
from (select t.*, (@cumep := @cumep + chance) as cumep
from t cross join
(select @cumep := 0, @r := rand()) params
) t
where @r between cumep - chance and cumep
limit 1;
Notes:
rand() , . rand() .- , .
limit 1 1. - , ,
cumep > @r. - - .
- , 1, .