That looks great!

I didn't play it enough to notice the odds of picking outcomes on one side or the other. Maybe they are using some technique that's not emulated correctly, but usually there's either a counter that's incremented each time through the input/LED scan loop, and they read it when they need a random number, or they do something like r=r*m+n, n=n+1 to get the next random number.