Náhodné čísla možno generovať pomocou funkcií random(), uniform(), randange() a randint() v module random štandardnej knižnice Python.
Modul random je súčasťou štandardnej knižnice, takže nie je potrebná žiadna dodatočná inštalácia. Samozrejme, musíte ho importovať.
Tu sú uvedené tieto informácie.
random.random()
(Číslo s pohyblivou rádovou čiarkou medzi 0,0 a 1,0)random.uniform()
(ľubovoľný rozsah čísel s pohyblivou desatinnou čiarkou)- Generovanie náhodných čísel, ktoré sa riadia normálnym rozdelením, Gaussovým rozdelením atď.
random.randrange()
(Celé číslo s ľubovoľným rozsahom a krokom)random.randint()
(Celé číslo v ľubovoľnom rozsahu)- Generovanie zoznamu s náhodnými číslami ako prvkami
- Zoznam náhodných čísel s pohyblivou rádovou čiarkou
- Zoznam celých náhodných čísel
- Inicializácia generátora náhodných čísel (nastavenie semienka náhodných čísel)
Pozrite si nasledujúci článok o tom, ako náhodne vybrať alebo zoradiť prvky zoznamu.
- Súvisiace články:Výber náhodných prvkov zo zoznamu v jazyku Python pomocou funkcie choice(), sample(), choices()
- random.random() (Číslo s pohyblivou rádovou čiarkou medzi 0,0 a 1,0)
- random.uniform() (ľubovoľný rozsah čísel s pohyblivou desatinnou čiarkou)
- Generovanie náhodných čísel, ktoré sa riadia normálnym rozdelením, Gaussovým rozdelením atď.
- random.randrange() (Celé číslo s ľubovoľným rozsahom a krokom)
- random.randint() (Celé číslo v ľubovoľnom rozsahu)
- Generovanie zoznamu s náhodnými číslami ako prvkami
- Inicializácia generátora náhodných čísel (nastavenie semienka náhodných čísel)
random.random() (Číslo s pohyblivou rádovou čiarkou medzi 0,0 a 1,0)
Funkcia random() modulu random generuje náhodné číslo s pohyblivou desatinnou čiarkou typu float, ktoré je v rozsahu od 0,0 do 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (ľubovoľný rozsah čísel s pohyblivou desatinnou čiarkou)
uniform(a, b)
Funkcie tohto náhodného modulu generujú náhodné čísla s pohyblivou desatinnou čiarkou typu float v ľubovoľnom z nasledujúcich rozsahov
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Dva argumenty môžu byť väčšie alebo menšie; ak sú rovnaké, vrátia prirodzene len túto hodnotu. Návratová hodnota je vždy float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Argument môže byť zadaný aj ako float.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
To, či je hodnota b zahrnutá do rozsahu, závisí od nasledujúceho zaokrúhlenia, ako je zdokumentované.a + (b-a) * random.random()
To, či je hodnota koncového bodu b v rozsahu alebo nie, závisí od zaokrúhľovania s pohyblivou rádovou čiarkou v nasledujúcej rovnici
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Generovanie náhodných čísel, ktoré sa riadia normálnym rozdelením, Gaussovým rozdelením atď.
Vyššie uvedené funkcie random() a uniform() generujú rovnomerne rozdelené náhodné čísla, ale existujú aj funkcie na generovanie čísel s pohyblivou rádovou čiarkou, ktoré sa riadia nasledujúcim rozdelením.
- beta rozdelenie:
random.betavariate()
- exponenciálne rozdelenie:
random.expovariate()
- gama rozdelenie:
random.gammavariate()
- Gaussovo rozdelenie:
random.gauss()
- lognormálne rozdelenie:
random.lognormvariate()
- normálne rozdelenie:
random.normalvariate()
- Von Misesovo rozdelenie:
random.vonmisesvariate()
- Paretovo rozdelenie:
random.paretovariate()
- Weibullovo rozdelenie:
random.weibullvariate()
Parametre každého rozdelenia sa určujú pomocou argumentov. Podrobnosti nájdete v oficiálnej dokumentácii.
random.randrange() (Celé číslo s ľubovoľným rozsahom a krokom)
randrange(start, stop, step)
Funkcia tohto náhodného modulu vracia náhodne vybraný prvok z nasledujúcich prvkov.range(start, stop, step)
Rovnako ako pri range() možno argumenty start a step vynechať. Ak sú vynechané, štart=0 a krok=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Argument step možno nastaviť tak, aby sa generovalo párne alebo nepárne náhodné celé číslo alebo náhodné celé číslo, ktoré je násobkom troch.
Ak je napríklad začiatok párny a krok = 2, možno náhodne získať len párne celé čísla v rozsahu.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Celé číslo v ľubovoľnom rozsahu)
randint(a, b)
Funkcia tohto náhodného modulu vracia nasledujúce náhodné celé číslo int.a <= n <= b
randrange(a, b + 1)
Rovnaké; všimnite si, že do rozsahu je zahrnutá aj hodnota b.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Generovanie zoznamu s náhodnými číslami ako prvkami
V tejto časti vysvetlíme, ako použiť modul random štandardnej knižnice na generovanie zoznamu s náhodnými číslami ako prvkami.
Zoznam náhodných čísel s pohyblivou desatinnou čiarkou
Ak chcete vygenerovať zoznam, ktorého prvky sú náhodné čísla s pohyblivou desatinnou čiarkou, skombinujte funkcie random() a uniform() so zápisom porozumenia zoznamu.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
V uvedenom príklade sa používa funkcia range(), ale pre požadovaný počet prvkov je možné použiť aj zoznamy a kôpky. Podrobnejšie informácie o porozumení zoznamov nájdete v nasledujúcom článku.
- Súvisiace články:Používanie notácie zoznamov jazyka Python
Zoznam celočíselných náhodných čísel int
Pri generovaní zoznamu, ktorého prvky sú celočíselné náhodné čísla, môže kombinácia vyššie uvedených funkcií randange() a randint() so zápisom porozumenia zoznamu viesť k duplicitným hodnotám.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Ak chcete vytvoriť náhodnú postupnosť celých čísel bez duplikácie, vyberte prvky funkcie range() s ľubovoľným rozsahom pomocou funkcie random.sample().
print(random.sample(range(10), k=5))
# [6, 4, 3, 7, 5]
print(random.sample(range(100, 200, 10), k=5))
# [130, 190, 140, 150, 170]
Viac informácií o funkcii random.sample() nájdete v nasledujúcom článku.
- Súvisiace články:Výber náhodných prvkov zo zoznamu v jazyku Python pomocou funkcie choice(), sample(), choices()
Inicializácia generátora náhodných čísel (nastavenie semienka náhodných čísel)
Zadaním ľubovoľného celého čísla funkcii seed() modulu random je možné stanoviť semeno náhodného čísla a inicializovať generátor náhodných čísel.
Po inicializácii s rovnakým semienkom sa náhodná hodnota generuje vždy rovnakým spôsobom.
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025
random.seed(0)
print(random.random())
# 0.8444218515250481
print(random.random())
# 0.7579544029403025