@Override
	public List<Resident> applyFilter() {
		reprodMales = new ArrayList<Resident>();
		reprodFemales = new ArrayList<Resident>();
		fillReprodMales();
		fillReprodFemales();
		
		Random random = new Random();
		List<Resident> reproductedChilds = new ArrayList<Resident>();
		int maxCouples = Math.min(reprodMales.size(), reprodFemales.size());
		int maxReproduction = population.size() * PopulationParameters.REPRODUCTION_PRCT / 100;
		
		int couplesSel = 0;
		int reproducted = 0;
		while (couplesSel < maxCouples && reproducted < maxReproduction){
			couplesSel++;
			
			int manIdx = random.nextInt(reprodMales.size());
			Resident Man = reprodMales.get(manIdx);
			int womanIdx = random.nextInt(reprodFemales.size());
			Resident Woman = reprodFemales.get(womanIdx);
			
			//randomicamente dice si la pareja reproduce
			if (true || random.nextBoolean()){
				Resident child = makeChild(Man,Woman);
				reproductedChilds.add(child);
			}
			reprodMales.remove(manIdx);
			reprodFemales.remove(womanIdx);
		}
		
		return reproductedChilds;
	}