Use knuth shuffle instead of silly shuffle. Index: canfield.c =================================================================== RCS file: /cvs/src/games/canfield/canfield/canfield.c,v retrieving revision 1.13 diff -u -p -r1.13 canfield.c --- canfield.c 29 Aug 2013 20:22:11 -0000 1.13 +++ canfield.c 3 Nov 2014 17:26:01 -0000 @@ -533,8 +533,8 @@ shuffle(struct cardtype *deck[]) deck[i]->visible = FALSE; deck[i]->paid = FALSE; } - for (i = decksize-1; i>=0; i--) { - j = arc4random_uniform(decksize); + for (i = decksize - 1; i > 0; i--) { + j = arc4random_uniform(i + 1); if (i != j) { temp = deck[i]; deck[i] = deck[j];