Juhuslike kümnend- ja täisarvude genereerimine Pythonis, sealhulgas random(), randrange() ja randint().

Äri

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.

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.

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.

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