Nambari nasibu zinaweza kutengenezwa kwa kutumia nasibu(), sare(), randange(), na randint() kazi katika moduli nasibu ya maktaba ya kiwango cha Python.
Moduli ya nasibu imejumuishwa kwenye maktaba ya kawaida, kwa hivyo hakuna usakinishaji wa ziada unaohitajika. Bila shaka, unahitaji kuagiza.
Habari ifuatayo imetolewa hapa.
random.random()
(Nambari ya pointi inayoelea kati ya 0.0 na 1.0)random.uniform()
(Msururu wowote wa nambari za sehemu zinazoelea)- Tengeneza nambari nasibu zinazofuata usambazaji wa kawaida, usambazaji wa Gaussian, n.k.
random.randrange()
(Nambari kamili ya masafa kiholela na hatua)random.randint()
(Nambari kamili katika safu yoyote)- Inazalisha orodha iliyo na nambari nasibu kama vipengele
- Orodha ya nambari za sehemu zinazoelea nasibu
- Orodha ya nambari kamili za nasibu
- Anzisha jenereta ya nambari nasibu (rekebisha mbegu ya nambari nasibu)
Tazama makala ifuatayo kuhusu jinsi ya kutoa au kupanga vipengele vya orodha bila mpangilio.
- Nakala Zinazohusiana:Kuchagua vitu vya nasibu kutoka kwa orodha kwenye Python kwa kutumia choice(), sampuli(), choices()
- random.random()(Nambari ya pointi inayoelea kati ya 0.0 na 1.0)
- random.uniform()(Msururu wowote wa nambari za sehemu zinazoelea)
- Tengeneza nambari nasibu zinazofuata usambazaji wa kawaida, usambazaji wa Gaussian, n.k.
- random.randrange()(Nambari kamili ya masafa kiholela na hatua)
- random.randint()(Nambari kamili katika safu yoyote)
- Inazalisha orodha iliyo na nambari nasibu kama vipengele
- Anzisha jenereta ya nambari nasibu (rekebisha mbegu ya nambari nasibu)
random.random()(Nambari ya pointi inayoelea kati ya 0.0 na 1.0)
Utendakazi wa moduli nasibu nasibu() hutoa nambari ya sehemu inayoelea nasibu ya aina ya kuelea ambayo ni kati ya 0.0 na 1.0.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(Msururu wowote wa nambari za sehemu zinazoelea)
uniform(a, b)
Utendakazi wa sehemu hii nasibu huzalisha nambari nasibu za aina ya sehemu ya kuelea ya nambari katika safu zozote zifuatazo
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Hoja hizo mbili zinaweza kuwa kubwa au ndogo; ikiwa ni sawa, kwa kawaida watarudisha tu thamani hiyo. Thamani ya kurudi daima ni kuelea.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Hoja pia inaweza kubainishwa kama kuelea.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Iwapo thamani ya b imejumuishwa katika safu inategemea mduara ufuatao, kama ulivyoandikwa.a + (b-a) * random.random()
Ikiwa thamani ya sehemu ya mwisho b iko katika safu au la inategemea na mduara wa sehemu inayoelea katika mlinganyo ufuatao.
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Tengeneza nambari nasibu zinazofuata usambazaji wa kawaida, usambazaji wa Gaussian, n.k.
Nambari za nasibu() na uniform() hapo juu hutoa nambari nasibu zilizosambazwa kwa usawa, lakini pia kuna chaguo za kukokotoa za kutoa nambari za sehemu zinazoelea zinazofuata usambazaji ufuatao.
- usambazaji wa beta:
random.betavariate()
- usambazaji wa kielelezo:
random.expovariate()
- usambazaji wa gamma:
random.gammavariate()
- Usambazaji wa Gaussian:
random.gauss()
- usambazaji usio wa kawaida:
random.lognormvariate()
- usambazaji wa kawaida:
random.normalvariate()
- Usambazaji wa Von Mises:
random.vonmisesvariate()
- Usambazaji wa Pareto:
random.paretovariate()
- Usambazaji wa Weibull:
random.weibullvariate()
Vigezo vya kila usambazaji vinabainishwa na hoja. Tazama hati rasmi kwa maelezo.
random.randrange()(Nambari kamili ya masafa kiholela na hatua)
randrange(start, stop, step)
Utendakazi wa moduli hii nasibu hurejesha kipengele kilichochaguliwa bila mpangilio kutoka kwa vipengele vifuatavyo.range(start, stop, step)
Kama ilivyo kwa range(), hoja huanza na hatua zinaweza kuachwa. Ikiwa zimeachwa, anza=0 na hatua=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Hatua ya hoja inaweza kuwekwa ili kutoa nambari kamili isiyo ya kawaida au isiyo ya kawaida, au nambari nasibu ambayo ni zidishio kati ya tatu.
Kwa mfano, ikiwa kuanza ni sawa na hatua=2, nambari kamili pekee katika safu zinaweza kupatikana kwa nasibu.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(Nambari kamili katika safu yoyote)
randint(a, b)
Utendakazi wa moduli hii nasibu hurejesha nambari kamili ifuatayo int.a <= n <= b
randrange(a, b + 1)
Sawa na hii; kumbuka kuwa thamani ya b pia imejumuishwa katika safu.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Inazalisha orodha iliyo na nambari nasibu kama vipengele
Katika sehemu hii, tutaeleza jinsi ya kutumia moduli nasibu ya maktaba ya kawaida kutoa orodha yenye nambari nasibu kama vipengele.
Orodha ya nambari nasibu zilizo na sehemu zinazoelea
Ili kuunda orodha ambayo vipengee vyake ni nambari nasibu za sehemu zinazoelea, changanya vitendakazi nasibu() na sare() na nukuu ya ufahamu wa orodha.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Katika mfano hapo juu, range() inatumika, lakini orodha na nakala pia zinawezekana kwa idadi inayotakiwa ya vitu. Kwa maelezo zaidi juu ya ufahamu wa orodha, tafadhali rejelea nakala ifuatayo.
- Nakala Zinazohusiana:Kutumia nukuu ya ufahamu wa orodha ya Python
Orodha ya nambari kamili int nasibu
Wakati wa kutengeneza orodha ambayo vipengele vyake ni nambari nasibu kamili, kuchanganya randange() na randint() na nukuu ya ufahamu wa orodha kunaweza kusababisha nakala za thamani.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Iwapo ungependa kutengeneza mfuatano wa nasibu wa nambari kamili bila kunakili, toa vipengele vya range() na safu kiholela kwa kutumia 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]
Kwa habari zaidi kuhusu random.sample(), tafadhali rejelea makala ifuatayo.
- Nakala Zinazohusiana:Kuchagua vitu vya nasibu kutoka kwa orodha kwenye Python kwa kutumia choice(), sampuli(), choices()
Anzisha jenereta ya nambari nasibu (rekebisha mbegu ya nambari nasibu)
Kwa kutoa nambari kamili kiholela kwa seed(), nambari nasibu ya nambari inaweza kusasishwa na jenereta ya nambari nasibu inaweza kuanzishwa.
Baada ya kuanzishwa kwa mbegu sawa, thamani ya nasibu daima hutolewa kwa njia sawa.
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