Aug 27th, 2021 - written by Kimserey with .

The random module in Python provides a way to generate pseudo-random numbers for various distributions. In this post, we will explore the most commmonly used functionalities of the random module; generating random integers and selecting randomly from sequences.

For generating random integers we can use `randrage(start, stop[, step])`

. It will generate a random integeter between start and stop excluded. An optional step can be added to generate random values in step. If the start value isn’t provided the default value is 0.

1
2
3
4
5
6
7
8
9
10
11
12
13

>>> from random import randrange
>>> randrange(10)
>>> 4
>>> randrange(5, 10)
>>> 8
>>> randrange(-10, 10)
>>> -4
>>> randrange(-10, 10, 3)
>>> 5

We can see that using `randrange`

, we can get a random integer within the range given.

If we need a decimal value between 0 and 1, we can use the `random`

function:

1
2
3
4

>>> from random import random
>>> random()
>>> 0.059563900839753714

And lastly if we want to get random bits, we can use the `getrandbits`

function:

1
2
3
4
5
6
7
8
9
10
11
12
13

>>> from random import getrandbits
>>> getrandbits(3)
>>> 2
>>> getrandbits(3)
>>> 4
>>> bin(getrandbits(3))
>>> '0b111'
>>> bin(getrandbits(3))
>>> '0b11'

`getrandbits`

actually generates an integer, but the integer is guaranteed to be of `k`

bits as we can see in the example.

Using the random module, we can also select random values out of a sequence with `choice`

:

1
2
3
4
5
6
7
8
9

>>> from random import choice
>>> a = [1, 2, 3, 4]
>>> choice(a)
>>> 3
>>> choice(a)
>>> 2

`choice`

accepts a sequence as parameter and will randomly output one value from the sequence.

Lastly `choices`

provides us a way to get `k`

random elements from a sequence with replacement. *With replacement* simply means that at each pick, every value have the same probability to be picked as they have on previous picks.

1
2
3
4
5
6
7

>>> a = [1, 2, 3, 4]
>>> choices(a, k=2)
>>> [4, 2]
>>> choices(a, k=2)
>>> [3, 3]

Here we asked to get two elements chosen randomly from `a`

. We can see that it’s possible to get `3, 3`

as the selection is done with replacement.

`choices`

also accepts either relative weights or cumulative weights which can be use to add weight to the selection:

1
2

>>> choices(a, weights=[100, 1, 2, 3], k=3)
>>> [1, 1, 1]

Setting a relative weight of `100`

on the first element of `a`

will skew heavily the pick which we then see return only `1`

s.

And that concludes today’s post on `random`

module! In this post, I’ve only covered the 10% functionalities of `random`

which I use all the time, but for the rest feel free to checkout the official documentation linked below. I hope you liked this post and I see you on the next one!