Pagbuo ng mga random na decimal at integer sa Python, kabilang ang random(), randrange(), at ranint()

Negosyo

Maaaring mabuo ang mga random na numero gamit ang random(), uniform(), randange(), at ranint() function sa random na module ng Python standard library.

Ang random na module ay kasama sa karaniwang library, kaya walang karagdagang pag-install ang kinakailangan. Siyempre, kailangan mong i-import ito.

Ang sumusunod na impormasyon ay ibinigay dito.

  • random.random()(Floating point number sa pagitan ng 0.0 at 1.0)
  • random.uniform()(Anumang hanay ng mga numero ng floating point)
  • Bumuo ng mga random na numero na sumusunod sa isang normal na distribusyon, Gaussian distribution, atbp.
  • random.randrange()(Integer ng arbitrary na saklaw at hakbang)
  • random.randint()(Isang integer sa anumang hanay)
  • Bumubuo ng isang listahan na may mga random na numero bilang mga elemento
    • Listahan ng mga random na floating-point na numero
    • Listahan ng mga integer na random na numero
  • I-initialize ang random number generator (ayusin ang random number seed)

Tingnan ang sumusunod na artikulo sa kung paano random na kunin o pag-uri-uriin ang mga elemento ng isang listahan.

random.random()(Floating point number sa pagitan ng 0.0 at 1.0)

Ang random na function ng module na random() ay bumubuo ng random na floating-point na numero ng uri ng float na nasa pagitan ng 0.0 at 1.0.

import random

print(random.random())
# 0.4496839011176701

random.uniform()(Anumang hanay ng mga numero ng floating point)

uniform(a, b)Ang mga function ng random na module na ito ay bumubuo ng mga random na numero ng floating-point number float type sa alinman sa mga sumusunod na hanay

  • a <= n <= b
  • b <= n <= a
import random

print(random.uniform(100, 200))
# 175.26585048238275

Ang dalawang argumento ay maaaring maging mas malaki o mas maliit; kung pantay-pantay sila, natural lang na ibabalik nila ang halagang iyon. Palaging float ang return value.

print(random.uniform(100, -100))
# -27.82338731501028

print(random.uniform(100, 100))
# 100.0

Ang argumento ay maaari ding tukuyin bilang isang float.

print(random.uniform(1.234, 5.637))
# 2.606743596829249

Kung ang halaga ng b ay kasama sa hanay ay nakasalalay sa sumusunod na pag-ikot, gaya ng nakadokumento.
a + (b-a) * random.random()

Kung ang endpoint value b ay nasa hanay o wala ay depende sa floating point rounding sa sumusunod na equation
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation

Bumuo ng mga random na numero na sumusunod sa isang normal na distribusyon, Gaussian distribution, atbp.

Ang random() at uniform() na mga function sa itaas ay bumubuo ng pantay na ipinamahagi na mga random na numero, ngunit mayroon ding mga function upang bumuo ng mga floating point na numero na sumusunod sa sumusunod na pamamahagi.

  • pamamahagi ng beta:random.betavariate()
  • exponential distribution:random.expovariate()
  • pamamahagi ng gamma:random.gammavariate()
  • Pamamahagi ng Gaussian:random.gauss()
  • pamamahagi ng lognormal:random.lognormvariate()
  • normal na pamamahagi:random.normalvariate()
  • Pamamahagi ng Von Mises:random.vonmisesvariate()
  • Pamamahagi ng Pareto:random.paretovariate()
  • Pamamahagi ng Weibull:random.weibullvariate()

Ang mga parameter ng bawat pamamahagi ay tinukoy ng mga argumento. Tingnan ang opisyal na dokumentasyon para sa mga detalye.

random.randrange()(Integer ng arbitrary na saklaw at hakbang)

randrange(start, stop, step)
Ang function ng random na module na ito ay nagbabalik ng random na napiling elemento mula sa mga sumusunod na elemento.
range(start, stop, step)

Tulad ng sa range(), ang mga argumento ay nagsisimula at hakbang ay maaaring tanggalin. Kung ang mga ito ay tinanggal, simulan=0 at hakbang=1.

import random

print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(random.randrange(10))
# 5

Ang hakbang ng argumento ay maaaring itakda upang makabuo ng kahit o kakaibang random na integer, o isang random na integer na isang multiple ng tatlo.

Halimbawa, kung ang simula ay pantay at hakbang=2, kahit na mga integer lang sa hanay ang maaaring makuha nang random.

print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]

print(random.randrange(10, 20, 2))
# 18

random.randint()(Isang integer sa anumang hanay)

randint(a, b)
Ang function ng random na module na ito ay nagbabalik ng sumusunod na random integer int.
a <= n <= b
randrange(a, b + 1)Katumbas nito; tandaan na ang halaga ng b ay kasama rin sa hanay.

print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74

Bumubuo ng isang listahan na may mga random na numero bilang mga elemento

Sa seksyong ito, ipapaliwanag namin kung paano gamitin ang random na module ng karaniwang library upang bumuo ng isang listahan na may mga random na numero bilang mga elemento.

Listahan ng mga random na numero na may floating-point floats

Upang makabuo ng isang listahan na ang mga elemento ay mga floating-point na random na numero, pagsamahin ang random() at uniform() na mga function na may list comprehension notation.

import random

print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]

Sa halimbawa sa itaas, ginagamit ang range(), ngunit posible rin ang mga listahan at tuple para sa nais na bilang ng mga elemento. Para sa higit pang mga detalye sa mga pag-unawa sa listahan, mangyaring sumangguni sa sumusunod na artikulo.

Listahan ng mga integer int random na numero

Kapag bumubuo ng isang listahan na ang mga elemento ay mga integer na random na numero, ang pagsasama-sama ng nasa itaas na randange() at randint() sa notasyon ng pag-unawa sa listahan ay maaaring magresulta sa mga duplicate na halaga.

print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]

Kung gusto mong gumawa ng random na pagkakasunud-sunod ng mga integer na walang duplication, i-extract ang mga elemento ng range() na may arbitrary range gamit ang 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]

Para sa higit pang impormasyon tungkol sa random.sample(), mangyaring sumangguni sa sumusunod na artikulo.

I-initialize ang random number generator (ayusin ang random number seed)

Sa pamamagitan ng pagbibigay ng arbitrary integer sa random module’s function seed(), ang random number seed ay maaaring maayos at ang random number generator ay maaaring masimulan.

Pagkatapos ng pagsisimula sa parehong binhi, ang random na halaga ay palaging nabuo sa parehong paraan.

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