This is an interesting addition, I can see it's viability, but it is actually not correctly implemented here. It's actually a bit of a task to get this to do what you want. In particular if you reference my code you can see that next is simply rand.Next(100) will generate code between 0 and 99. In this particular use of next it will actually generate numbers between 1 and userInput-1. This means that we're not getting truly random results since the probability between each step isn't truly 1/4.