Juhuslikke numbreid saab genereerida Pythoni standardraamatukogu juhusliku mooduli random(), uniform(), randange() ja randint() funktsioonide abil.
Juhuslik moodul sisaldub standardraamatukogus, nii et täiendavat paigaldamist ei ole vaja. Loomulikult tuleb see importida.
Siin on esitatud järgmine teave.
random.random()
(Ujukomaarv vahemikus 0,0 ja 1,0)random.uniform()
(Mis tahes ujukomaarvude vahemik)- Genereerida juhuslikke numbreid, mis järgivad normaaljaotust, Gaussi jaotust jne.
random.randrange()
(Täisarv suvalises vahemikus ja sammuga)random.randint()
(täisarv mis tahes vahemikus)- Loetelu genereerimine juhuslike numbritega elementidena
- Juhuslike ujukomaarvude loend
- Tervearvuliste juhuslike numbrite loetelu
- Juhusliku numbrigeneraatori initsialiseerimine (juhusliku numbri seemne fikseerimine)
Vaata järgmist artiklit selle kohta, kuidas loendi elemente juhuslikult välja võtta või sorteerida.
- Seotud artiklid:Juhuslike elementide valimine loendist Pythonis kasutades choice(), sample(), choices(), valikuid()
- random.random() (Ujukomaarv vahemikus 0,0 ja 1,0)
- random.uniform() (Mis tahes ujukomaarvude vahemik)
- Genereerida juhuslikke numbreid, mis järgivad normaaljaotust, Gaussi jaotust jne.
- random.randrange() (Täisarv suvalises vahemikus ja sammuga)
- random.randint() (täisarv mis tahes vahemikus)
- Loetelu genereerimine juhuslike numbritega elementidena
- Juhusliku numbrigeneraatori initsialiseerimine (juhusliku numbri seemne fikseerimine)
random.random() (Ujukomaarv vahemikus 0,0 ja 1,0)
Juhusliku mooduli funktsioon random() genereerib juhusliku ujukomaarvu tüüpi float, mis jääb vahemikku 0,0 kuni 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Mis tahes ujukomaarvude vahemik)
uniform(a, b)
Selle juhusliku mooduli funktsioonid genereerivad ujukomaarvu float-tüüpi juhuslikke numbreid mis tahes järgmistes vahemikes
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Kaks argumenti võivad olla kas suuremad või väiksemad; kui need on võrdsed, siis tagastatakse loomulikult ainult see väärtus. Tagastatav väärtus on alati float.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Argumendi võib määrata ka floatina.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
See, kas b väärtus kuulub vahemikku, sõltub järgmisest ümardamisest, nagu on dokumenteeritud.a + (b-a) * random.random()
See, kas lõppväärtus b on vahemikus või mitte, sõltub ujukoma ümardamisest järgmises võrrandis
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Genereerida juhuslikke numbreid, mis järgivad normaaljaotust, Gaussi jaotust jne.
Ülaltoodud funktsioonid random() ja uniform() genereerivad ühtlaselt jaotatud juhuslikke numbreid, kuid on olemas ka funktsioonid, mis genereerivad ujukomaarvud, mis järgivad järgmist jaotust.
- beetajagamine:
random.betavariate()
- eksponentsiaalne jaotus:
random.expovariate()
- gammajaotus:
random.gammavariate()
- Gaussi jaotumine:
random.gauss()
- lognormaalne jaotus:
random.lognormvariate()
- normaaljaotus:
random.normalvariate()
- Von Misesi jaotus:
random.vonmisesvariate()
- Pareto-jaotus:
random.paretovariate()
- Weibulli jaotus:
random.weibullvariate()
Iga jaotuse parameetrid on määratud argumentidega. Üksikasjalikumat teavet leiate ametlikust dokumentatsioonist.
random.randrange() (Täisarv suvalises vahemikus ja sammuga)
randrange(start, stop, step)
Selle juhusliku mooduli funktsioon tagastab juhuslikult valitud elemendi järgmistest elementidest.range(start, stop, step)
Nagu ka range() puhul, võib argumendid start ja step ära jätta. Kui need jäetakse ära, on start=0 ja step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Argumendi step saab määrata, et genereerida paariline või paaritu juhuslik täisarv või juhuslik täisarv, mis on kolmekordne.
Näiteks kui algus on paariline ja samm=2, saab juhuslikult saada ainult paarilised täisarvud vahemikus.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (täisarv mis tahes vahemikus)
randint(a, b)
Selle juhusliku mooduli funktsioon tagastab järgmise juhusliku täisarvu int.a <= n <= b
randrange(a, b + 1)
Samaväärne sellega; pange tähele, et ka b väärtus sisaldub vahemikus.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Loetelu genereerimine juhuslike numbritega elementidena
Selles jaotises selgitame, kuidas kasutada standardraamatukogu juhusliku mooduli abil loendi genereerimiseks, mille elementideks on juhuslikud arvud.
Loetelu juhuslikest arvudest koos ujukomaarvudega
Loendi genereerimiseks, mille elemendid on ujukomaarvud, kombineerige funktsioonid random() ja uniform() koos loendi mõistmise märkega.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Ülaltoodud näites kasutatakse funktsiooni range(), kuid soovitud arvu elementide puhul on võimalik kasutada ka loendeid ja tupleid. Lisateavet loetelude käsitlemise kohta leiate järgmisest artiklist.
- Seotud artiklid:Pythoni loendi arusaadavuse notatsiooni kasutamine
Loetelu täisarvulistest int juhuslikest numbritest
Loendi genereerimisel, mille elemendid on täisarvulised juhuslikud arvud, võib ülaltoodud randange() ja randint() kombineerimine loendi mõistmise notatsiooniga anda tulemuseks topeltväärtused.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Kui soovite teha täisarvude juhusliku jada ilma dubleerimiseta, võtke range() elemendid suvalise vahemikuga, kasutades 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]
Lisateavet random.sample() kohta leiate järgmisest artiklist.
- Seotud artiklid:Juhuslike elementide valimine loendist Pythonis kasutades choice(), sample(), choices(), valikuid()
Juhusliku numbrigeneraatori initsialiseerimine (juhusliku numbri seemne fikseerimine)
Andes juhusliku mooduli funktsioonile seed() suvalise täisarvu, saab juhusliku arvu seemne fikseerida ja juhusliku arvu generaatori initsialiseerida.
Pärast initsialiseerimist sama seemnega genereeritakse juhuslik väärtus alati samamoodi.
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