# 12.3. Using Random Numbers¶

If we want to simulate something like flipping a coin, we can assign a different number to each possible outcome. There are two sides to a coin - heads and tails - so let’s call heads 0 and tails 1. If we make a random integer between 0 and 1, we can think of it as representing heads or tails on the coin:

By using the accumulator pattern and a loop, we could repeat a series of flips. Let’s do 100 flips and count up how many are heads (0). Each time through the loop, we will pick a new random number. We will only add to our accumulator numHeads if the random value is 0.

Try running the program a few times. You usually won’t get exactly 50, but it will usually be pretty close to that number since we flip 100 coins. Determining if this program is working correctly is a bit of a challenge - it would take too long to use Codelens to watch the whole execution. To sanity check it, try the following:

• Change the number of iterations of the loop from 100 to 10. That will be a lot easier to deal with.

• Uncomment the two print lines that are commented out. The first will print each of the flips. The second will print each one that was determined to be a head and how many we have seen so far.

• Now you can verify that:

• We generate 10 0’s and 1’s

• We call each 0 a “head”

• The numHeads count goes up by 1 each time

Note

Remember that while debugging we should simplify things as much as possible and use print statements to “see” what is happening as our code runs.

Mixed up programs

The following program should roll 10 dice (that have sides from 1-6). We want to count print the number of dice that show a 6. Drag the blocks from the left and place them in the correct order on the right. Be sure to also indent correctly! You will not use all of the blocks.