Стварэнне выпадковых дзесятковых і цэлых лікаў у Python, у тым ліку random(), randrange() і randint()

Бізнэс

Выпадковыя лікі могуць быць згенераваныя з дапамогай функцый random(), uniform(), randange() і randint() у модулі random стандартнай бібліятэкі Python.

Выпадковы модуль уключаны ў стандартную бібліятэку, таму дадатковая ўстаноўка не патрабуецца. Вядома, трэба імпартаваць.

Тут прадстаўлена наступная інфармацыя.

  • random.random()(Лік з плаваючай кропкай ад 0,0 да 1,0)
  • random.uniform()(Любы дыяпазон лікаў з плаваючай кропкай)
  • Стварэнне выпадковых лікаў, якія ідуць за нармальным размеркаваннем, размеркаваннем Гаўса і г.д.
  • random.randrange()(Цэлы лік адвольнага дыяпазону і кроку)
  • random.randint()(Цэлы лік у любым дыяпазоне)
  • Стварэнне спісу з выпадковымі лікамі ў якасці элементаў
    • Спіс выпадковых лікаў з плаваючай кропкай
    • Спіс цэлых выпадковых лікаў
  • Ініцыялізаваць генератар выпадковых лікаў (выправіць насенне выпадковых лікаў)

Глядзіце наступны артыкул аб тым, як выпадковым чынам здабываць або сартаваць элементы спісу.

random.random()(Лік з плаваючай кропкай ад 0,0 да 1,0)

Функцыя random модуля random() генеруе выпадковы лік з плаваючай кропкай тыпу float, які знаходзіцца паміж 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

Два аргументы могуць быць як большымі, так і меншымі; калі яны роўныя, яны, натуральна, вернуць толькі гэтае значэнне. Зваротнае значэнне заўсёды з’яўляецца float.

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

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

Аргумент таксама можа быць зададзены як float.

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)

Як і з дыяпазонам (), аргументы запуску і крок можа быць прапушчаны. Калі яны апушчаны, пачаць = 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)
Функцыя гэтага выпадковага модуля вяртае наступнае выпадковае цэлае цэлае.
a <= n <= b
randrange(a, b + 1)Эквівалентна гэтаму; звярніце ўвагу, што значэнне b таксама ўваходзіць у дыяпазон.

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

Стварэнне спісу з выпадковымі лікамі ў якасці элементаў

У гэтым раздзеле мы растлумачым, як выкарыстоўваць модуль random стандартнай бібліятэкі для стварэння спісу з выпадковымі лікамі ў якасці элементаў.

Спіс выпадковых лікаў з плаваючай кропкай

Каб стварыць спіс, элементамі якога з’яўляюцца выпадковыя лікі з плаваючай кропкай, аб’яднайце функцыі random() і uniform() з запісам для разумення спісу.

import random

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

У прыведзеным вышэй прыкладзе выкарыстоўваецца range(), але таксама магчымыя спісы і картэжы для патрэбнай колькасці элементаў. Для больш падрабязнай інфармацыі аб разуменні спісу, калі ласка, звярніцеся да наступнага артыкула.

Спіс цэлых выпадковых лікаў int

Пры генерацыі спісу, элементамі якога з’яўляюцца цэлыя выпадковыя лікі, спалучэнне вышэйзгаданых randange() і randint() з абазначэннем разумення спісу можа прывесці да паўтаральных значэнняў.

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

Калі вы хочаце стварыць выпадковую паслядоўнасць цэлых лікаў без дублявання, здабудзьце элементы range() з адвольным дыяпазонам з дапамогай 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]

Для атрымання дадатковай інфармацыі аб 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