Python стандарт номын сангийн санамсаргүй модулийн random(), uniform(), randange(), randint() функцуудыг ашиглан санамсаргүй тоо үүсгэж болно.
Санамсаргүй модуль нь стандарт номын санд багтсан тул нэмэлт суулгах шаардлагагүй. Мэдээжийн хэрэг, та үүнийг импортлох хэрэгтэй.
Энд дараах мэдээллийг хүргэж байна.
random.random()
(0.0-1.0 хооронд хөвөх цэгийн тоо)random.uniform()
(Хөвөгч цэгийн тоонуудын дурын муж)- Ердийн тархалт, Гауссын тархалт гэх мэтийг дагаж мөрддөг санамсаргүй тоонуудыг үүсгэ.
random.randrange()
(Дурын муж ба алхамын бүхэл тоо)random.randint()
(Дурын муж дахь бүхэл тоо)- Элемент болгон санамсаргүй тоогоор жагсаалт үүсгэх
- Санамсаргүй хөвөгч цэгийн тоонуудын жагсаалт
- Бүхэл санамсаргүй тоонуудын жагсаалт
- Санамсаргүй тооны үүсгэгчийг эхлүүлэх (санамсаргүй тооны үрийг засах)
Жагсаалтын элементүүдийг хэрхэн санамсаргүй байдлаар задлах, ангилах талаар дараах нийтлэлийг үзнэ үү.
- Холбоотой нийтлэлүүд:Сонголт(), sample(), options() ашиглан Python дээрх жагсаалтаас санамсаргүй элементүүдийг сонгох
- random.random()(0.0-1.0 хооронд хөвөх цэгийн тоо)
- random.uniform()(Хөвөгч цэгийн тоонуудын дурын муж)
- Ердийн тархалт, Гауссын тархалт гэх мэтийг дагаж мөрддөг санамсаргүй тоонуудыг үүсгэ.
- random.randrange()(Дурын муж ба алхамын бүхэл тоо)
- random.randint()(Дурын муж дахь бүхэл тоо)
- Элемент болгон санамсаргүй тоогоор жагсаалт үүсгэх
- Санамсаргүй тооны үүсгэгчийг эхлүүлэх (санамсаргүй тооны үрийг засах)
random.random()(0.0-1.0 хооронд хөвөх цэгийн тоо)
Санамсаргүй модулийн random() функц нь 0.0-1.0 хооронд хөвөх төрлийн санамсаргүй хөвөгч цэгийн тоог үүсгэдэг.
import random
print(random.random())
# 0.4496839011176701
random.uniform()(Хөвөгч цэгийн тоонуудын дурын муж)
uniform(a, b)
Энэхүү санамсаргүй модулийн функцууд нь дараах мужуудын аль нэгэнд хөвөх цэгийн хөвөгч төрлийн санамсаргүй тоог үүсгэдэг.
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Хоёр аргумент нь том эсвэл жижиг байж болно; Хэрэв тэд тэнцүү бол тэд уг утгыг л буцаана. Буцах утга нь үргэлж хөвөгч байна.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Аргументыг мөн хөвөгч гэж зааж өгч болно.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
b-ийн утга мужид багтах эсэх нь баримтжуулсан дараах бөөрөнхийлөлтөөс хамаарна.a + (b-a) * random.random()
b эцсийн цэгийн утга мужид байгаа эсэх нь дараах тэгшитгэл дэх хөвөгч цэгийн бөөрөнхийлөлтөөс хамаарна.
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Ердийн тархалт, Гауссын тархалт гэх мэтийг дагаж мөрддөг санамсаргүй тоонуудыг үүсгэ.
Дээрх random() болон uniform() функцууд нь жигд тархсан санамсаргүй тоонуудыг үүсгэдэг боловч дараах тархалтыг дагаж хөвөгч цэгийн тоог үүсгэх функцүүд бас байдаг.
- бета түгээлт:
random.betavariate()
- экспоненциал тархалт:
random.expovariate()
- гамма тархалт:
random.gammavariate()
- Гауссын тархалт:
random.gauss()
- Логнормаль тархалт:
random.lognormvariate()
- хэвийн тархалт:
random.normalvariate()
- Von Mises түгээлт:
random.vonmisesvariate()
- Парето хуваарилалт:
random.paretovariate()
- Weibull хуваарилалт:
random.weibullvariate()
Тархалт бүрийн параметрүүдийг аргументуудаар тодорхойлно. Дэлгэрэнгүй мэдээллийг албан ёсны бичиг баримтаас үзнэ үү.
random.randrange()(Дурын муж ба алхамын бүхэл тоо)
randrange(start, stop, step)
Энэхүү санамсаргүй модулийн функц нь дараах элементүүдээс санамсаргүй байдлаар сонгосон элементийг буцаана.range(start, stop, step)
range()-ийн нэгэн адил эхлэл ба алхамыг орхиж болно. Хэрэв тэдгээрийг орхигдуулсан бол start=0, алхам=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Аргументийн алхамыг тэгш эсвэл сондгой санамсаргүй бүхэл тоо эсвэл гурвын үржвэр санамсаргүй бүхэл тоо үүсгэхээр тохируулж болно.
Жишээлбэл, хэрэв эхлэл нь тэгш, алхам=2 бол тухайн муж дахь тэгш бүхэл тоог санамсаргүй байдлаар авах боломжтой.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint()(Дурын муж дахь бүхэл тоо)
randint(a, b)
Энэ санамсаргүй модулийн функц нь дараах санамсаргүй бүхэл тоо int-ийг буцаана.a <= n <= b
randrange(a, b + 1)
Үүнтэй тэнцэх; b-ийн утга мөн мужид багтсан болохыг анхаарна уу.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Элемент болгон санамсаргүй тоогоор жагсаалт үүсгэх
Энэ хэсэгт бид стандарт номын сангийн санамсаргүй модулийг хэрхэн элемент болгон санамсаргүй тоо бүхий жагсаалт үүсгэх талаар тайлбарлах болно.
Хөвөгч цэг бүхий санамсаргүй тоонуудын жагсаалт
Элементүүд нь хөвөгч цэгийн санамсаргүй тоонуудын жагсаалтыг үүсгэхийн тулд random() болон uniform() функцуудыг жагсаалт ойлгох тэмдэглэгээтэй хослуулна.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Дээрх жишээнд range()-г ашигласан боловч хүссэн тооны элементийн жагсаалт болон залгуурууд бас боломжтой. Жагсаалтын талаарх дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.
- Холбоотой нийтлэлүүд:Python жагсаалтын ойлголтын тэмдэглэгээг ашиглах
Бүхэл тоон санамсаргүй тоонуудын жагсаалт
Элементүүд нь бүхэл санамсаргүй тоо бүхий жагсаалтыг үүсгэх үед дээрх randange() болон randint()-г жагсаалтын ойлгох тэмдэглэгээтэй хослуулах нь давхардсан утгыг үүсгэж болзошгүй.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Хэрэв та бүхэл тоонуудын санамсаргүй дарааллыг давхардалгүйгээр хийхийг хүсвэл random.sample() ашиглан range()-ийн элементүүдийг дурын мужтай гаргаж авна уу.
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]
random.sample()-ын талаарх дэлгэрэнгүй мэдээллийг дараах нийтлэлээс авна уу.
- Холбоотой нийтлэлүүд:Сонголт(), sample(), options() ашиглан Python дээрх жагсаалтаас санамсаргүй элементүүдийг сонгох
Санамсаргүй тооны үүсгэгчийг эхлүүлэх (санамсаргүй тооны үрийг засах)
Санамсаргүй модулийн seed() функцэд дурын бүхэл тоо өгснөөр санамсаргүй тооны үрийг засч, санамсаргүй тоо үүсгэгчийг эхлүүлж болно.
Нэг үрээр эхлүүлсний дараа санамсаргүй утгыг үргэлж ижил аргаар үүсгэнэ.
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