Python random modulis siūlo įvairias funkcijas at­si­tik­ti­nių skaičių ge­ne­ra­vi­mui įvairiais formatais, pradedant svei­kai­siais skaičiais, baigiant slankiojo kablelio skaičiais ir elementų pa­si­rin­ki­mu iš sąrašų.

Kas yra Python at­si­tik­ti­nių skaičių modulis ir kam jis gali būti nau­do­ja­mas?

Python random modulis random yra įdiegta bi­b­lio­te­ka, lei­džian­ti generuoti at­si­tik­ti­nius skaičius ir atlikti at­si­tik­ti­nu­mo pagrįstas ope­ra­ci­jas jūsų prog­ra­mo­se. Ji apima įvairias funkcijas, skirtas generuoti pse­udo­ran­do­muo­sius skaičius, kurie gali būti naudojami daugelyje programų, nuo mo­de­lia­vi­mo iki žaidimų kūrimo ir krip­to­gra­fi­nių užduočių.

Svarbi at­si­tik­ti­nio modulio savybė yra jo gebėjimas pateikti at­kar­to­ja­mus re­zul­ta­tus. Nustačius pradinę vertę arba sėklą, at­si­tik­ti­nio ge­ne­ra­vi­mo procesą galima atkartoti. Tai naudinga bandymams, eks­per­i­men­tams ir mo­de­lia­vi­mui, kuriuose rei­ka­lin­gi nuoseklūs at­si­tik­ti­niai duomenys.

Kokios yra at­si­tik­ti­nio modulio funkcijos?

Python random modulis turi įvairius metodus, skirtus at­si­tik­ti­nių skaičių ge­ne­ra­vi­mui ir ap­do­ro­ji­mui. Toliau pa­teik­to­je lentelėje pateikta funkcijų ir jų savybių apžvalga:

Funkcijos pa­va­di­ni­mas Pa­aiš­ki­ni­mas
seed(a=None, version=2) Apibrėžia at­si­tik­ti­nių skaičių ge­ne­ra­to­riaus pradinę vertę (sėklą)
getstate() Grąžina at­si­tik­ti­nių skaičių ge­ne­ra­to­riaus dabartinę būseną kaip objektą
setstate(state) Atkuria at­si­tik­ti­nių skaičių ge­ne­ra­to­riaus būseną naudojant būsenos objektą
getrandbits(k) Grąžina sveiką skaičių su k bitais
randrange(start, stop, step) Sukuria at­si­tik­ti­nį sveiką skaičių iš nurodyto intervalo.
randint(a, b) Grąžina at­si­tik­ti­nį sveiką skaičių iš nurodyto intervalo
choice(seq) Grąžina at­si­tik­ti­nį elementą iš nurodytos sekos
choices(population, weights=None, *, cum_weights=None, k=1) Sukuria sąrašą su k at­si­tik­ti­nai at­rink­tais ele­men­tais iš po­pu­lia­ci­jos; galima nurodyti tikimybes.
sample(k, population) Sukuria sąrašą su k at­si­tik­ti­nai at­rink­tais ele­men­tais iš po­pu­lia­ci­jos, be pa­si­kar­to­ji­mų
shuffle(x) Sąrašo elementus sumaišo at­si­tik­ti­ne tvarka.
random() Grąžina at­si­tik­ti­nį skaičių su slan­kiuo­ju kableliu nuo 0 iki 1.
uniform(a, b) Grąžina at­si­tik­ti­nį skaičių su slan­kiuo­ju kableliu nu­ro­dy­ta­me intervale, įskaitant ribines vertes.
triangular(low, high, mode) Sukuria at­si­tik­ti­nį skaičių su slan­kiuo­ju kableliu trikampio pa­si­skirs­ty­mo intervale.
betavariate(alpha, beta) Grąžina at­si­tik­ti­nį kintamojo skaičiaus skaičių iš beta pa­si­skirs­ty­mo.
expovariate(lambd) Grąžina at­si­tik­ti­nį skaičių su slan­kiuo­ju kableliu iš eks­po­nen­ti­nio pa­si­skirs­ty­mo.
gammavariate(alpha, beta) Sukuria at­si­tik­ti­nį kintamojo tikslumo skaičių iš gama pa­si­skirs­ty­mo.
gauss(mu, sigma) Grąžina at­si­tik­ti­nį skaičių su slan­kiuo­ju kableliu iš Gauso pa­si­skirs­ty­mo.
lognormvariate(mu, sigma) Sukuria at­si­tik­ti­nį kintamojo taško skaičių iš lo­ga­rit­mi­nio nor­ma­lio­jo pa­si­skirs­ty­mo.
normalvariate(mu, sigma) Grąžina at­si­tik­ti­nį slankiojo kablelio skaičių iš nor­ma­lio­jo pa­si­skirs­ty­mo.
vonmisesvariate(mu, kappa) Grąžina at­si­tik­ti­nį skaičių su von Mises pa­si­skirs­ty­mu arba ap­skri­ti­niu nor­ma­li­niu pa­si­skirs­ty­mu.
paretovariate(alpha) Grąžina at­si­tik­ti­nį skaičių su Pareto pa­si­skirs­ty­mu.
weibullvariate(alpha, beta) Grąžina at­si­tik­ti­nį kintamojo tikslumo skaičių su Weibull pa­si­skirs­ty­mu.

Kaip at­si­tik­ti­nai pa­si­rink­ti elementus iš sąrašo

Jei norite iš sąrašo atrinkti kelis at­si­tik­ti­nius elementus, galite naudoti Python at­si­tik­ti­nių skaičių modulio funkciją choices(seq, k=n), kur n yra norimų at­si­tik­ti­nių elementų skaičius.

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Randomly selecting an element from the list
random_elements = random.choices(my_list, k=3)
print("Randomly selected elements:", random_elements)
python

Šiuo atveju naudojame funkciją choices(), kad at­rink­tu­me tris at­si­tik­ti­nius elementus iš my_list. Re­zul­ta­tai grąžinami kaip trijų at­si­tik­ti­nių elementų sąrašas.

Kaip sumaišyti sąrašą

Funkcija shuffle() išdėsto Python sąrašo elementus at­si­tik­ti­ne tvarka.

import random
# A list of elements
my_list = ['Apple', 'Banana', 'Orange', 'Strawberry', 'Cherry']
# Shuffle the elements in the list
random.shuffle(my_list)
print("Shuffled list:", my_list) # Example Output: Shuffled list: ['Strawberry', 'Banana', 'Apple', 'Cherry', 'Orange']
python

Reikėtų ne­pa­mirš­ti, kad shuffle() keičia patį sąrašą ir negrąžina naujo. Po shuffle() naudojimo pradinis sąrašas bus at­si­tik­ti­ne tvarka.

Kaip nustatyti pradinę vertę

Kai naudojate Python random modulio funkciją random.seed(), kad nu­sta­ty­tu­mė­te konkretų sėklos vertę, ji ini­ci­juo­ja at­si­tik­ti­nių skaičių ge­ne­ra­to­rių, kad šis generuotų at­si­tik­ti­nius skaičius nau­do­da­mas šią sėklą. Todėl, jei vėliau vėl nu­sta­ty­si­te tą pačią sėklos vertę, jūsų prog­ra­mo­je bus ge­ne­ruo­ja­ma identiška at­si­tik­ti­nių skaičių seka.

import random
# Setting the seed value to 42
random.seed(42)
# Generating random numbers
print(random.random())  # Example output: 0.6394267984578837
print(random.random())  # Example output: 0.025010755222666936
# Resetting the seed value to 42
random.seed(42)
# Generating random numbers again
print(random.random())  # Example output: 0.6394267984578837 (identical to the previous value)
print(random.random())  # Example output: 0.025010755222666936 (identical to the previous value)
python

Nustačius pradinę vertę, ge­ne­ruo­ja­mi ir išvedami at­si­tik­ti­niai skaičiai. Nustačius tą pačią pradinę vertę, vėl ge­ne­ruo­ja­ma ta pati at­si­tik­ti­nių skaičių seka. Šiame pavyzdyje pradinė vertė yra 42. Kol ši pradinė vertė išlieka pastovi, at­si­tik­ti­niai skaičiai gali būti nuo­sek­liai at­kar­to­ja­mi.

Go to Main Menu