Before you keep reading...
Runestone Academy can only continue if we get support from individuals like you. As a student you are well aware of the high cost of textbooks. Our mission is to provide great books to you for free, but we ask that you consider a $10 donation, more if you can or less if $10 is a burden.
Before you keep reading...
Making great stuff takes time and $$. If you appreciate the book you are reading now and want to keep quality materials free for other students please consider a donation to Runestone Academy. We ask that you consider a $10 donation, but if you can give more thats great, if $10 is too much for your budget we would be happy with whatever you can afford as a show of support.
We often want to use random numbers in programs. Here are a few typical uses:
To play a game of chance where the computer needs to throw some dice, pick a number, or flip a coin,
To shuffle a deck of playing cards randomly,
To randomly allow a new enemy spaceship to appear and shoot at you,
To simulate possible rainfall when we make a computerized model for estimating the environmental impact of building a dam,
For encrypting your banking session on the Internet.
Python provides a module
random that helps with tasks like this. You can take a look at it in the documentation.
Here are the key things we can do with it.
Press the run button a number of times. Note that the values change each time. These are random numbers.
randrange function generates an integer between its lower and upper argument where the lower bound is included, but the upper bound is excluded. So,
randrange(1,7) will include numbers from 1-6. If you omit the first parameter it is assumed to be 0 so
randrange(10) will give you numbers from 0-9. All the values have an equal probability
of occurring (i.e. the results are uniformly distributed).
random() function returns a floating point number in the range [0.0, 1.0) — the square bracket means “closed
interval on the left” and the round parenthesis means “open interval on the right”. In other words, 0.0 is possible,
but all returned numbers will be strictly less than 1.0. It is usual to scale the results after calling this method,
to get them into a range suitable for your application.
In the case shown below, we’ve converted the result of the method call to a number in the range [0.0, 5.0). Once more, these are uniformly distributed numbers — numbers close to 0 are just as likely to occur as numbers close to 3, or numbers close to 5. If you continue to press the run button you will see random values between 0.0 and up to but not including 5.0.
It is important to note that random number generators are based on a deterministic algorithm — repeatable and predictable. So they’re called pseudo-random generators — they are not genuinely random. They start with a seed value. Each time you ask for another random number, you’ll get one based on the current seed attribute, and the state of the seed (which is one of the attributes of the generator) will be updated. The good news is that each time you run your program, the seed value is likely to be different meaning that even though the random numbers are being created algorithmically, you will likely get random behavior each time you execute.
Check your understanding