Python-д random(), randrange() болон randint() зэрэг санамсаргүй аравтын бутархай болон бүхэл тоо үүсгэх

Бизнес эрхэлдэг

Python стандарт номын сангийн санамсаргүй модулийн random(), uniform(), randange(), randint() функцуудыг ашиглан санамсаргүй тоо үүсгэж болно.

Санамсаргүй модуль нь стандарт номын санд багтсан тул нэмэлт суулгах шаардлагагүй. Мэдээжийн хэрэг, та үүнийг импортлох хэрэгтэй.

Энд дараах мэдээллийг хүргэж байна.

  • 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()-г ашигласан боловч хүссэн тооны элементийн жагсаалт болон залгуурууд бас боломжтой. Жагсаалтын талаарх дэлгэрэнгүй мэдээллийг дараах нийтлэлээс үзнэ үү.

Бүхэл тоон санамсаргүй тоонуудын жагсаалт

Элементүүд нь бүхэл санамсаргүй тоо бүхий жагсаалтыг үүсгэх үед дээрх 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()-ын талаарх дэлгэрэнгүй мэдээллийг дараах нийтлэлээс авна уу.

Санамсаргүй тооны үүсгэгчийг эхлүүлэх (санамсаргүй тооны үрийг засах)

Санамсаргүй модулийн 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
Copied title and URL