Логика random min max?
так ты же сам все объяснил вроде)
в 2.б получаем число от 0 до 3,
а в 3 пункте к этому числу добавляем 2, получится число от 2 до 5)
Math.random() * ( max - min) + min
Получаем рандомное число от 0 до 1, потом умножаем его на разницу (диапазон искомого числа). В конце, чтобы число было от min до max - прибавляем минимальное значение. 
Например 0.5 * (10 - 5) + 5 = 0.5 * 5 + 5 = 7.5 - число от 5 до 10