Files
pybricks-api/src/urandom/__init__.py
T

139 lines
3.1 KiB
Python

# SPDX-License-Identifier: MIT
# SPDX-License-Identifier: PSF-2.0
# Copyright (c) 2021 The Pybricks Authors
#
# Portions of the documentation copied from:
# https://docs.python.org/3/library/random.html
# Copyright (c) 2001-2021 Python Software Foundation
"""
This module implements pseudo-random number generators.
All functions in this module should be used with positional arguments. Keyword
arguments are not supported.
"""
from typing import Any, Optional, Sequence, overload
def seed(a: Optional[int] = None) -> None:
"""
seed(value=None)
Initializes the random number generator.
This gets called when the module is imported, so normally you do
not need to call this.
Arguments:
value: Seed value. When using ``None``, the system timer will be used.
"""
@overload
def randrange(stop: int) -> int:
...
@overload
def randrange(start: int, stop: int) -> int:
...
@overload
def randrange(start: int, stop: int, step: int) -> int:
...
def randrange(start, stop, step):
"""
randrange(stop) -> int
randrange(start, stop) -> int
randrange(start, stop, step) -> int
Returns a randomly selected element from ``range(start, stop, step)``.
For example, ``randrange(1, 7, 2)`` returns random numbers from ``1`` up to
(but excluding) ``7``, in increments of ``2``. In other words, it
returns ``1``, ``3``, or ``5``.
Arguments:
start (int): Lowest value. Defaults to ``0`` if only one argument is given.
stop (int): Highest value. This value is *not* included in the range.
step (int): Increment between values. Defaults to ``1`` if only one
or two arguments are given.
Returns:
The random number.
"""
def randint(a: int, b: int) -> int:
"""
randint(a, b) -> int
Gets a random integer :math:`N` satisfying :math:`a \\leq N \\leq b`.
Arguments:
a (int): Lowest value. This value *is* included in the range.
b (int): Highest value. This value *is* included in the range.
Returns:
The random integer.
"""
def getrandbits(k: int) -> int:
"""
getrandbits(k) -> int
Gets a random integer :math:`N` satisfying :math:`0 \\leq N < 2^{\\text{k}}`.
Arguments:
k (int): How many bits to use for the result.
"""
def choice(seq: Sequence[Any]) -> Any:
"""
choice(sequence) -> Any
Gets a random element from a sequence such as a tuple or list.
Arguments:
sequence: Sequence from which to select a random element.
Returns:
The randomly selected element.
Raises:
``IndexError``: If the sequence is empty.
"""
def random() -> float:
"""
random() -> float
Gets a random value :math:`x` satisfying :math:`0 \\leq x < 1`.
Returns:
The random value.
"""
def uniform(a: float, b: float) -> float:
"""
uniform(a, b) -> float
Gets a random floating point value :math:`x` satisfying :math:`a \\leq x \\leq b`.
Arguments:
a (float): Lowest value.
b (float): Highest value.
Returns:
The random value.
"""