Best solution to your problem is to create a nonuniform probabilistic value list. Then randomly pick a value from that list. For example:
If we have a list like below:
{5 , 5 , 5 , 5 , 10 , 10 , 10 , 20, 20 ,30} 
Our probabilities will be like that;
5 => 40%  ---  10 => 30%  ---  20 => 20%  ---  30 => 10%
You can achieve that solution with the simple method below:
private static int generateStat()
{
    ArrayList<Integer> stats = new ArrayList<Integer>();
    //first parameter is probability and second is the value
    stats.addAll(Collections.nCopies(30, (int)(Math.random()*30))); 
    stats.addAll(Collections.nCopies(45, (int)(Math.random()*20)+30));
    stats.addAll(Collections.nCopies(20, (int)(Math.random()*25)+50));
    stats.addAll(Collections.nCopies(5,  (int)(Math.random()*25)+75));
    return stats.get((int)(Math.random()*100));
}