Rather than going about it this way, I recommend populating the deck in order, then shuffling it:
cards = new ArrayList<President>(20);
for (int i = 1; i <= 20; i++) {
cards.add(new President(i, i));
}
Collections.shuffle(cards);
From the Collections.shuffle
documentation:
Randomly permutes the specified list using a default source of randomness. All permutations occur with approximately equal likelihood.