This code is intended to simulate rolling five dice and show each roll until all five dice have the same number: import random die1 = random.randint(1,6) die2 = random.randint(1,6) die3 = random.randint(1,6) die4 = random.randint(1,6) die5 = random.randint(1,6) count = 1 while (die1 != die2 and die1 != die3 and die1 != die4 and die1 != die5) or (die2 != die3 and die2 != die4 and die2 != die5) or (die3 != die4 and die3 != die5) or die4 != die5: print("Roll " + str(count) + ": " + str(die1) + "," + str(die2) + "," + str(die3) + "," + str(die4) + "," + str(die5)) die1 = random.randint(1,6) die2 = random.randint(1,6) die3 = random.randint(1,6) die4 = random.randint(1,6) die5 = random.randint(1,6) count = count + 1 print("Roll " + str(count) + ": " + str(die1) + "," + str(die2) + "," + str(die3) + "," + str(die4) + "," + str(die5)) It should take (6^5)/2 = 3888 rolls on average. However, I've tested it about twenty times and the highest I've achieved is 3144 throws. These are my two lowest results: Required 7 rolls: Roll 1: 6,2,5,2,4 Roll 2: 1,2,2,5,6 Roll 3: 1,1,4,4,5 Roll 4: 6,2,3,2,5 Roll 5: 1,4,5,5,1 Roll 6: 3,5,1,5,5 Roll 7: 4,4,4,4,4 Required 1 roll(!): Roll 1: 5,5,5,5,5 Is there something in my code causing this or has something else gone wrong? Continue reading...