Hægt er að búa til handahófskenndar tölur með því að nota random(), uniform(), randange() og randint() föllin í slembieiningunni í Python staðalsafninu.
Handahófskennd einingin er innifalin í venjulegu bókasafni, svo engin viðbótaruppsetning er nauðsynleg. Auðvitað þarftu að flytja það inn.
Eftirfarandi upplýsingar eru veittar hér.
random.random()
(Fljótandi tölur á milli 0,0 og 1,0)random.uniform()
(Hvaða svið af fljótandi tölum)- Búðu til handahófskenndar tölur sem fylgja normaldreifingu, Gaussdreifingu o.s.frv.
random.randrange()
(Heiltala handahófskennds bils og skrefs)random.randint()
(Heiltala á hvaða bili sem er)- Búa til lista með slembitölum sem þætti
- Listi yfir tilviljunarkenndar flottölur
- Listi yfir heiltölu handahófskenndar tölur
- Frumstilla slembitöluframleiðandann (lagaðu slembitölufræið)
Sjá eftirfarandi grein um hvernig á að draga út eða raða þáttum lista af handahófi.
- Tengdar greinar:Að velja handahófskennda þætti af lista í Python með því að nota choice(), sample(), choices()
- random.random()(Fljótandi tölur á milli 0,0 og 1,0)
- random.uniform()(Hvaða svið af fljótandi tölum)
- Búðu til handahófskenndar tölur sem fylgja normaldreifingu, Gaussdreifingu o.s.frv.
- random.randrange()(Heiltala handahófskennds bils og skrefs)
- random.randint()(Heiltala á hvaða bili sem er)
- Búa til lista með slembitölum sem þætti
- Frumstilla slembitöluframleiðandann (lagaðu slembitölufræið)
random.random()(Fljótandi tölur á milli 0,0 og 1,0)
Fallið handahófskenndu eininguna random() býr til handahófskenndan flottölu af tegund flota sem er á milli 0,0 og 1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(Hvaða svið af fljótandi tölum)
uniform(a, b)
Aðgerðir þessarar tilviljunarkenndar búa til handahófskenndar tölur af flottölutegundum á einhverju af eftirfarandi sviðum
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Rökin tvö geta verið annað hvort stærri eða minni; ef þeir eru jafnir munu þeir náttúrulega bara skila því gildi. Skilagildið er alltaf fljótandi.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Einnig er hægt að tilgreina rökin sem flot.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Hvort gildi b er innifalið í bilinu fer eftir eftirfarandi námundun, eins og skjalfest er.a + (b-a) * random.random()
Hvort endapunktsgildið b er á bilinu eða ekki fer eftir fljótandi námundun í eftirfarandi jöfnu
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Búðu til handahófskenndar tölur sem fylgja normaldreifingu, Gaussdreifingu o.s.frv.
Random() og uniform() föllin hér að ofan búa til jafndreifðar slembitölur, en það eru líka föll til að búa til flottölur sem fylgja eftirfarandi dreifingu.
- beta dreifingu:
random.betavariate()
- veldisvísisdreifingu:
random.expovariate()
- gamma dreifingu:
random.gammavariate()
- Gaussdreifing:
random.gauss()
- lognormal dreifing:
random.lognormvariate()
- eðlileg dreifing:
random.normalvariate()
- Von Mises dreifing:
random.vonmisesvariate()
- Pareto dreifing:
random.paretovariate()
- Weibull dreifing:
random.weibullvariate()
Færibreytur hverrar dreifingar eru tilgreindar með rökum. Sjá opinberu skjölin fyrir frekari upplýsingar.
random.randrange()(Heiltala handahófskennds bils og skrefs)
randrange(start, stop, step)
Fall þessarar tilviljunarkenndar skilar tilviljunarkenndu vali úr eftirfarandi þáttum.range(start, stop, step)
Eins og með range() er hægt að sleppa frumbreytunum byrjun og skrefi. Ef þeim er sleppt, byrja=0 og skref=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Hægt er að stilla röksemdaskrefið til að búa til slétta eða odda handahófskennda heiltölu, eða handahófskennda heiltölu sem er margfeldi af þremur.
Til dæmis, ef byrjun er jöfn og skref=2, er aðeins hægt að fá jafnar heilar tölur á bilinu af handahófi.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(Heiltala á hvaða bili sem er)
randint(a, b)
Fall þessarar handahófskenningar skilar eftirfarandi handahófskenndu heiltölu int.a <= n <= b
randrange(a, b + 1)
Jafngildir þessu; athugið að gildi b er einnig innifalið í bilinu.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Búa til lista með slembitölum sem þætti
Í þessum hluta munum við útskýra hvernig á að nota slembieiningu staðlaða bókasafnsins til að búa til lista með slembitölum sem þætti.
Listi yfir tilviljunarkenndar tölur með flotum
Til að búa til lista þar sem þættirnir eru slembitölur með flottölum skaltu sameina slembi() og samræmda() föllin með listaskilningi.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Í dæminu hér að ofan er range() notað, en listar og tuples eru líka mögulegir fyrir þann fjölda staka sem óskað er eftir. Fyrir frekari upplýsingar um listaskilning, vinsamlegast skoðaðu eftirfarandi grein.
- Tengdar greinar:Notkun Python listaskilnings nótnaskriftar
Listi yfir heiltölu slembitölur
Þegar búið er að búa til lista þar sem þættirnir eru heiltölur handahófskenndar tölur, getur það að sameina ofangreinda randange() og randint() með listaskilningsmerkingunni leitt til tvítekinna gilda.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Ef þú vilt búa til handahófskennda röð af heiltölum án tvítekningar, dragðu út þætti range() með handahófskennt bili með því að nota 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]
Fyrir frekari upplýsingar um random.sample(), vinsamlegast skoðaðu eftirfarandi grein.
- Tengdar greinar:Að velja handahófskennda þætti af lista í Python með því að nota choice(), sample(), choices()
Frumstilla slembitöluframleiðandann (lagaðu slembitölufræið)
Með því að gefa handahófskennda heiltölu fyrir virkni slembieiningarinnar seed(), er hægt að laga slembitölukornið og frumstilla slembitöluframleiðandann.
Eftir frumstillingu með sama fræi er slembigildið alltaf búið til á sama hátt.
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