random — véletlenszámok generálása

Ez a modul egy ál-véletlenszám-generátort (PRNG) valósít meg. A PRNG egy 32 bites Yasmarang-stílusú LCG; az első importáláskor egy 32 bites magot von ki ugyanabból a hardveres forrásból, amelyet az os.urandom() is használ, és minden ezt követő szám e mag determinisztikus függvénye.

Figyelem

A kimenet nem kriptográfiailag biztonságos – az algoritmus egy rövid kimeneti sorozatból kiszámítható, és a kezdeti mag csak 32 bit entrópiát hordoz. Kulcsanyaghoz, munkamenet-tokenekhez, jelszó-sókhoz vagy bármilyen más biztonsági szempontból érzékeny felhasználáshoz helyette hívd az os.urandom() függvényt.

Megjegyzés

Az intervallumokhoz a következő jelölést használjuk:

  • A () nyílt intervallumzárójelek, és nem tartalmazzák a végpontjaikat. Például a (0, 1) azt jelenti, hogy nagyobb mint 0 és kisebb mint 1. Halmazjelöléssel: (0, 1) = {x | 0 < x < 1}.

  • A [] zárt intervallumzárójelek, amelyek minden határpontjukat tartalmazzák. Például a [0, 1] azt jelenti, hogy nagyobb vagy egyenlő mint 0 és kisebb vagy egyenlő mint 1. Halmazjelöléssel: [0, 1] = {x | 0 <= x <= 1}.

Egész számokra vonatkozó függvények

random.getrandbits(n: int) int

Visszaad egy egész számot n véletlen bittel (0 <= n <= 32).

random.randint(a: int, b: int) int

Visszaad egy véletlen egész számot a [a, b] tartományból.

random.randrange(start: int, stop: int | None = None, step: int = 1) int

Az első forma egy véletlen egész számot ad vissza a [0, stop) tartományból. A második forma egy véletlen egész számot ad vissza a [start, stop) tartományból. A harmadik forma egy véletlen egész számot ad vissza a [start, stop) tartományból step lépésközzel. Például a randrange(1, 10, 2) hívása 1 és 9 közötti páratlan számokat ad vissza, mindkettőt beleértve.

Lebegőpontos számokra vonatkozó függvények

random.random() float

Visszaad egy véletlen lebegőpontos számot a [0.0, 1.0) tartományból.

random.uniform(a: float, b: float) float

Visszaad egy N véletlen lebegőpontos számot úgy, hogy a <= N <= b, ha a <= b, és b <= N <= a, ha b < a.

Egyéb függvények

random.seed(n: int | None = None, /) None

Inicializálja a véletlenszám-generátor modult az n maggal, amelynek egész számnak kell lennie. Ha nem adunk át argumentumot (vagy None értéket), a PRNG újra magot kap ugyanabból a port-specifikus forrásból, amelyet az os.urandom() is használ.

random.choice(sequence: Any) Any

Véletlenszerűen kiválaszt és visszaad egy elemet a sequence sorozatból (tuple, lista vagy bármely olyan objektum, amely támogatja az indexelési műveletet).