Python: Generate random number between x and y which is a multiple of 5

Question:

I’ve read the manual for pseudo-randomness in Python, and to my knowledge, you can only generate numbers up to a given maximum value, i.e. 0-1, 0-30, 0-1000, etc. I want to:

  • a) Generate a number between two ints, i.e. 5-55, and
  • b) Only include multiples of 5 (or those ending in 5 or 0, if that’s easier)

I’ve looked around, and I can’t find anywhere that explains this.

Asked By: tkbx

||

Answers:

Create an integer random between e.g. 1-11 and multiply it by 5. Simple math.

import random
for x in range(20):
  print random.randint(1,11)*5,
print

produces e.g.

5 40 50 55 5 15 40 45 15 20 25 40 15 50 25 40 20 15 50 10

The simplest way is to generate a random nuber between 0-1 then strech it by multiplying, and shifting it.
So yo would multiply by (x-y) so the result is in the range of 0 to x-y,
Then add x and you get the random number between x and y.

To get a five multiplier use rounding. If this is unclear let me know and I’ll add code snippets.

Answered By: Ofir Farchy
>>> import random
>>> random.randrange(5,60,5)

should work in any Python >= 2.

Answered By: mtrw

If you don’t want to do it all by yourself, you can use the random.randrange function.

For example import random; print random.randrange(10, 25, 5) prints a number that is between 10 and 25 (10 included, 25 excluded) and is a multiple of 5. So it would print 10, 15, or 20.

Answered By: Felix Loether
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.