random — generování náhodných čísel¶
Tento modul implementuje generátor pseudonáhodných čísel (PRNG). PRNG je 32bitový LCG ve stylu Yasmarang; při prvním importu načte jeden 32bitový seed ze stejného hardwarového zdroje, který používá os.urandom(), a každé následující číslo je deterministickou funkcí tohoto seedu.
Varování
Výstup není kryptograficky bezpečný – algoritmus je předvídatelný z krátké výstupní sekvence a počáteční seed nese pouze 32 bitů entropie. Pro klíčovací materiál, relační tokeny, soli hesel nebo jakékoli jiné bezpečnostně citlivé použití volejte místo toho os.urandom().
Poznámka
Pro intervaly se používá následující notace:
() jsou závorky otevřeného intervalu a nezahrnují své krajní body. Například (0, 1) znamená větší než 0 a menší než 1. V množinové notaci: (0, 1) = {x | 0 < x < 1}.
[] jsou závorky uzavřeného intervalu, které zahrnují všechny své limitní body. Například [0, 1] znamená větší nebo rovno 0 a menší nebo rovno 1. V množinové notaci: [0, 1] = {x | 0 <= x <= 1}.
Funkce pro celá čísla¶
- random.randrange(start: int, stop: int | None = None, step: int = 1) int¶
První tvar vrací náhodné celé číslo z rozsahu [0, stop). Druhý tvar vrací náhodné celé číslo z rozsahu [start, stop). Třetí tvar vrací náhodné celé číslo z rozsahu [start, stop) v krocích po step. Například volání
randrange(1, 10, 2)vrátí lichá čísla mezi 1 a 9 včetně.
Funkce pro čísla s plovoucí desetinnou čárkou¶
Ostatní funkce¶
- random.seed(n: int | None = None, /) None¶
Inicializuje modul generátoru náhodných čísel seedem n, který by měl být celé číslo. Pokud není předán žádný argument (nebo
None), je PRNG znovu naočkován ze stejného zdroje specifického pro daný port, který používáos.urandom().
- random.choice(sequence: Any) Any¶
Vybere a vrátí jednu položku náhodně ze sequence (n-tice, seznam nebo jakýkoli objekt, který podporuje operaci indexování).