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 аралығындағы float түрінің кездейсоқ өзгермелі нүкте санын жасайды.

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()
  • Фон Мизес тарату:random.vonmisesvariate()
  • Парето бөлу:random.paretovariate()
  • Вейбуль бөлу:random.weibullvariate()

Әрбір таратудың параметрлері аргументтер арқылы көрсетіледі. Толық ақпаратты ресми құжаттамадан қараңыз.

random.randrange()(Ерікті диапазон мен қадамның бүтін саны)

randrange(start, stop, step)
Бұл кездейсоқ модульдің функциясы келесі элементтерден кездейсоқ таңдалған элементті қайтарады.
range(start, stop, step)

range() сияқты бастау және қадам аргументтерін өткізіп жіберуге болады. Егер олар алынып тасталса, start=0 және step=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