Complete the Random number generation practice problem before reviewing the solution.

Review the Random number generation solution with AP CS Tutor Brandon Horn.

## Part (a)

names.get( (int) (Math.random() * names.size()) ) will select a random value from names with each value in names having an equal probability of being selected.

Math.random() generates a double in the range of [0.0, 1). Multiplying that value by names.size() and casting the result to an int results in a value in the range of [0, names.size) which spans the range of valid indexes in names.

## Part (b)

double r = Math.random(); results in r being assigned a value such that 0 <= r < 1.

Multiplying the result of Math.random by b – a would change the assignment statement to

double r = Math.random() * (b – a) and would result in values for r such that 0 <= r < b – a.

Adding a would change the statement to

double r = Math.random() * (b – a) + a and would result in values for r such that a <= r < b, which is the desired range.

## Part (c)

The code to replace /* condition */ should be Math.random() < 0.25. The statement will be true 25% of the time.

This technique is particularly helpful in the GridWorld Case Study when a Bug or other Actor is supposed to perform an action with a specific probability.