public CardList getRandomCombinationWithoutRepetition(int numCards) {
        Set<Integer> intSelections = new TreeSet<Integer>();

        if (numCards >= size()) {
            throw new IllegalArgumentException("numCards (" + numCards + ") is larger than the size of the card database.");
        }
        else if (numCards >= size()/4) {
            throw new IllegalArgumentException("numCards (" + numCards + ") is too large for this algorithm; it will take too long to complete.");
        }

        while (intSelections.size() < numCards) {
            intSelections.add((int) (Math.random() * size()));
        }
		

		CardList result = new CardList(numCards);
		for (Integer index : intSelections) {
			result.add(allCards.get(index));
		}
		
		return result;
	}