Satunnaislukuja voidaan luoda Pythonin standardikirjaston random-moduulin random(), uniform(), randange() ja randint() -funktioilla.
Satunnaismoduuli sisältyy standardikirjastoon, joten lisäasennusta ei tarvita. Sinun on tietenkin tuotava se.
Seuraavat tiedot annetaan tässä.
random.random()
(Liukuluku välillä 0,0-1,0.)random.uniform()
(Mikä tahansa liukulukujen alue)- Luo satunnaislukuja, jotka noudattavat normaalijakaumaa, Gaussin jakaumaa jne.
random.randrange()
(Kokonaisluku, jonka vaihteluväli ja askel on mielivaltainen)random.randint()
(Kokonaisluku millä tahansa alueella)- Luettelon luominen, jonka elementteinä on satunnaislukuja
- Luettelo satunnaisista liukuluvuista
- Luettelo kokonaislukujen satunnaisluvuista
- Satunnaislukugeneraattorin alustaminen (satunnaislukusiemenen määrittäminen).
Katso seuraavasta artikkelista, miten luettelon elementtejä voidaan poimia tai lajitella satunnaisesti.
- Aiheeseen liittyvät artikkelit:Satunnaisten elementtien valitseminen luettelosta Pythonissa käyttämällä choice(), sample(), choices(), valinnat() funktioita
- random.random() (Liukuluku välillä 0,0-1,0.)
- random.uniform() (Mikä tahansa liukulukujen alue)
- Luo satunnaislukuja, jotka noudattavat normaalijakaumaa, Gaussin jakaumaa jne.
- random.randrange() (Kokonaisluku, jonka vaihteluväli ja askel on mielivaltainen)
- random.randint() (Kokonaisluku millä tahansa alueella)
- Luettelon luominen, jonka elementteinä on satunnaislukuja
- Satunnaislukugeneraattorin alustaminen (satunnaislukusiemenen määrittäminen).
random.random() (Liukuluku välillä 0,0-1,0.)
Random-moduulin funktio random() tuottaa satunnaisen float-tyyppisen liukuluvun, joka on välillä 0,0-1,0.
import random
print(random.random())
# 0.4496839011176701
random.uniform() (Mikä tahansa liukulukujen alue)
uniform(a, b)
Tämän satunnaismoduulin funktiot tuottavat satunnaislukuja, joiden liukulukutyyppi on float, millä tahansa seuraavista alueista.
a <= n <= b
b <= n <= a
import random
print(random.uniform(100, 200))
# 175.26585048238275
Kaksi argumenttia voi olla joko suurempia tai pienempiä; jos ne ovat yhtä suuria, ne palauttavat luonnollisesti vain tämän arvon. Paluuarvo on aina liukuluku.
print(random.uniform(100, -100))
# -27.82338731501028
print(random.uniform(100, 100))
# 100.0
Argumentti voidaan määrittää myös liukulukuna.
print(random.uniform(1.234, 5.637))
# 2.606743596829249
Se, sisällytetäänkö b:n arvo vaihteluväliin, riippuu seuraavasta pyöristyksestä, joka on dokumentoitu.a + (b-a) * random.random()
Se, onko päätepisteen arvo b alueella vai ei, riippuu seuraavan yhtälön mukaisesta liukulukupisteen pyöristyksestä.
a + (b-a) * random()
random.uniform() — Generate pseudo-random numbers — Python 3.10.2 Documentation
Luo satunnaislukuja, jotka noudattavat normaalijakaumaa, Gaussin jakaumaa jne.
Edellä mainitut random()- ja uniform()-funktiot tuottavat tasaisesti jakautuneita satunnaislukuja, mutta on olemassa myös funktioita, jotka tuottavat seuraavan jakauman mukaisia liukulukuja.
- beetajakauma:
random.betavariate()
- eksponenttijakauma:
random.expovariate()
- gammajakauma:
random.gammavariate()
- Gaussin jakauma:
random.gauss()
- lognormaalijakauma:
random.lognormvariate()
- normaalijakauma:
random.normalvariate()
- Von Misesin jakauma:
random.vonmisesvariate()
- Paretojakauma:
random.paretovariate()
- Weibull-jakauma:
random.weibullvariate()
Kunkin jakauman parametrit määritetään argumenteilla. Katso lisätietoja virallisesta dokumentaatiosta.
random.randrange() (Kokonaisluku, jonka vaihteluväli ja askel on mielivaltainen)
randrange(start, stop, step)
Tämän satunnaismoduulin funktio palauttaa satunnaisesti valitun elementin seuraavista elementeistä.range(start, stop, step)
Kuten kohdassa range(), argumentit start ja step voidaan jättää pois. Jos ne jätetään pois, start=0 ja step=1.
import random
print(list(range(10)))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(random.randrange(10))
# 5
Argumentti step voidaan asettaa tuottamaan parillinen tai pariton satunnainen kokonaisluku tai satunnainen kokonaisluku, joka on kolmen monikerta.
Jos esimerkiksi alku on parillinen ja askel = 2, vain parilliset kokonaisluvut alueella voidaan saada satunnaisesti.
print(list(range(10, 20, 2)))
# [10, 12, 14, 16, 18]
print(random.randrange(10, 20, 2))
# 18
random.randint() (Kokonaisluku millä tahansa alueella)
randint(a, b)
Tämän satunnaismoduulin funktio palauttaa seuraavan satunnaisen kokonaisluvun int.a <= n <= b
randrange(a, b + 1)
Vastaa tätä; huomaa, että myös b:n arvo sisältyy alueeseen.
print(random.randint(50, 100))
# print(random.randrange(50, 101))
# 74
Luettelon luominen, jonka elementteinä on satunnaislukuja
Tässä luvussa kerrotaan, miten standardikirjaston satunnaismoduulin avulla luodaan lista, jonka alkioina on satunnaislukuja.
Luettelo satunnaisluvuista, joissa on liukulukuja
Voit luoda listan, jonka elementit ovat liukulukujen satunnaislukuja, yhdistämällä random()- ja uniform()-funktiot ja listan ymmärtämisen merkintätavan.
import random
print([random.random() for i in range(5)])
# [0.5518201298350598, 0.3476911314933616, 0.8463426180468342, 0.8949046353303931, 0.40822657702632625]
Yllä olevassa esimerkissä on käytetty range()-toimintoa, mutta myös listat ja tuplet ovat mahdollisia halutun alkioiden määrän määrittämiseksi. Lisätietoja listojen ymmärrettävyydestä on seuraavassa artikkelissa.
- Aiheeseen liittyvät artikkelit:Python-luettelon ymmärtämisen merkintätapojen käyttäminen
Luettelo kokonaislukujen int satunnaisluvuista
Kun luodaan lista, jonka elementit ovat kokonaislukusatunnaislukuja, edellä mainittujen randange()- ja randint()-sovellusten yhdistäminen listan ymmärtämisen merkintätapaan voi johtaa päällekkäisiin arvoihin.
print([random.randint(0, 10) for i in range(5)])
# [8, 5, 7, 10, 7]
Jos haluat tehdä satunnaisen kokonaislukusarjan ilman päällekkäisyyksiä, poimi range()-olion elementit mielivaltaisella alueella käyttämällä random.sample()-ohjelmaa.
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]
Lisätietoja random.sample() -toiminnosta on seuraavassa artikkelissa.
- Aiheeseen liittyvät artikkelit:Satunnaisten elementtien valitseminen luettelosta Pythonissa käyttämällä choice(), sample(), choices(), valinnat() funktioita
Satunnaislukugeneraattorin alustaminen (satunnaislukusiemenen määrittäminen).
Antamalla satunnaismoduulin funktiolle seed() mielivaltainen kokonaisluku, satunnaislukujen siemen voidaan määrittää ja satunnaislukugeneraattori voidaan alustaa.
Kun satunnaisarvo on alustettu samalla siemenellä, se luodaan aina samalla tavalla.
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