This is the documentation for the latest development branch of MicroPython and may refer to features that are not available in released versions.

If you are looking for the documentation for a specific release, use the drop-down menu on the left and select the desired version.

random – generate random numbers

This module implements a pseudo-random number generator (PRNG).

This module implements a subset of the corresponding CPython module, as described below. For more information, refer to the original CPython documentation: random .


The following notation is used for intervals:

  • () are open interval brackets and do not include their endpoints. For example, (0, 1) means greater than 0 and less than 1. In set notation: (0, 1) = {x | 0 < x < 1}.

  • [] are closed interval brackets which include all their limit points. For example, [0, 1] means greater than or equal to 0 and less than or equal to 1. In set notation: [0, 1] = {x | 0 <= x <= 1}.


The randrange(), randint() and choice() functions are only available if the MICROPY_PY_RANDOM_EXTRA_FUNCS configuration option is enabled.

Functions for integers


Return an integer with n random bits (0 <= n <= 32).

random.randint(a, b)

Return a random integer in the range [a, b].

random.randrange(start, stop)
random.randrange(start, stop[, step])

The first form returns a random integer from the range [0, stop). The second form returns a random integer from the range [start, stop). The third form returns a random integer from the range [start, stop) in steps of step. For instance, calling randrange(1, 10, 2) will return odd numbers between 1 and 9 inclusive.

Functions for floats


Return a random floating point number in the range [0.0, 1.0).

random.uniform(a, b)

Return a random floating point number N such that a <= N <= b for a <= b, and b <= N <= a for b < a.

Other Functions

random.seed(n=None, /)

Initialise the random number generator module with the seed n which should be an integer. When no argument (or None) is passed in it will (if supported by the port) initialise the PRNG with a true random number (usually a hardware generated random number).

The None case only works if MICROPY_PY_RANDOM_SEED_INIT_FUNC is enabled by the port, otherwise it raises ValueError.


Chooses and returns one item at random from sequence (tuple, list or any object that supports the subscript operation).