Вариант с возможным днем рождения в текущий день и соблюдением возраста, minAge - минимальный возраст, maxAge - максимальный возраст, age - итоговый возраст, birthDate - итоговая дата рождения
var minAge = 18;
var maxAge = 45;
var dayMilSec = 24 * 60 * 60 * 1000;
var tempDate = new Date();
var nowYear = tempDate.getFullYear();
var minYear = nowYear - maxAge - 1;
var maxYear = nowYear - minAge;
var minMilSec = tempDate.setFullYear(minYear) + dayMilSec;
var maxMilSec = tempDate.setFullYear(maxYear) - dayMilSec;
var birthDate = new Date(rand(minMilSec, maxMilSec));
var age = nowYear - birthDate.getFullYear();
var monthDiff = tempDate.getMonth() - birthDate.getMonth();
if(monthDiff < 0 || (monthDiff === 0 && tempDate.getDate() < birthDate.getDate())){
age--;
};