Стандартная библиотека Python: случайный

Python

В анализе данных, очистке данных и обработке наборов данных, помимо использования, мы знакомы сnumpy.randomмодуль для генерации случайных чисел или случайной выборки, на самом деле стандартная библиотека python также предоставляет модуль random, если вы не хотите, просто импортируйте его отдельно, потому что вы используете случайные числаnumpyКогда стандартная библиотека предоставляетrandomВ конце концов, модули — это облегченная альтернатива, и оба они работают практически одинаково.

1. Импортируйте модуль

random — это модуль стандартной библиотеки Python, который устанавливается вместе с Python и может быть импортирован напрямую, без отдельной установки.

import random

2. Практические методы

2.1 random()

random()генерирует число с плавающей запятой в полуоткрытом интервале [0, 1), почти всеrandomРеализация методов модуля зависит отrandom().

random.random()
0.9111245252327139

2.2 randint(a, b)

Возвращает случайное целое число N такое, что a

random.randint(0, 10)
8

2.3 randrange(start, stop[, step])

отrange(start, stop, step)Возвращает случайно выбранный элемент. Это эквивалентноchoice(range(start, stop, step)), но на самом деле не создает объект диапазона.

random.randrange(0, 10, 2)
2

2.4 choice(seq)

Возвращает случайный элемент из непустой последовательности seq. Вызывает IndexError, если seq пуст.

random.choice([0, 1, 2, 3, 4, 5])
2

2.5 choices(population, weights=None, *, cum_weights=None, k=1)

отpopulationВыберите замену в , возвращая список элементов размера k . Вызывает IndexError, если популяция пуста.

Если указана последовательность весов, выбор основан на относительных весах. В качестве альтернативы, если задана последовательность cum_weights, выбор делается на основе кумулятивных весов (возможно, вычисленных с помощью itertools.accumulate() ). Например, относительные веса[10, 5, 30, 5]Эквивалент совокупного веса[10, 15, 45, 50]. Внутренне относительные веса преобразуются в совокупные веса перед выбором, поэтому предоставление совокупных весов экономит усилия.

random.choices([0, 1, 2, 3, 4, 5], k=2)
[0, 2]
random.choices([0, 1, 2, 3, 4, 5], cum_weights=[10, 20, 30, 40, 50, 60], k=3)
[4, 4, 4]

2.6 shuffle(x[, random])

Перетасуйте положение последовательности x случайным образом.

Необязательный аргумент random — это функция с 0 аргументами, которая возвращает случайное число с плавающей запятой в [0.0, 1.0); по умолчанию это функция random().

Чтобы изменить неизменяемую последовательность и вернуть новый перетасованный список, используйтеsample(x, k=len(x)).

a = [0, 1, 2, 3, 4, 5]
random.shuffle(a)
a
[5, 2, 3, 0, 1, 4]

2.7 sample(population, k)

Возвращает список уникальных элементов длиной k, выбранных из последовательности или набора совокупности. Используется для случайной выборки без повторения.

random.sample([1, 2, 3, 4, 5, 6], k=2)
[1, 3]

2.8 gauss(mu, sigma)

Гауссово распределение. мю — среднее значение, а сигма — стандартное отклонение.

[random.gauss(0, 1) for i in range(10)]
[1.232295558291998,
 -0.23589397085653746,
 -1.4190307151921895,
 0.18999908858301912,
 0.780671045104774,
 0.041722424850158674,
 0.7392269754813698,
 1.4612049925568829,
 0.09647538110312114,
 -0.32525720572670025]

3. Краткий обзор исходного кода

Ниже приведена часть исходного кода модуля random на официальном github для Python, которая помогает понять базовую структуру модуля random и описание исходного кода практических методов, представленных в этой статье.

random.py:

class Random(_random.Random):
    def seed(self, a=None, version=2):
        pass
    def randrange(self, start, stop=None, step=1, _int=int):
        pass
    def randint(self, a, b):
        pass
    def choice(self, seq):
        pass
    def shuffle(self, x, random=None):
        pass
    def sample(self, population, k):
        pass
    def choices(self, population, weights=None, *, cum_weights=None, k=1):
        pass
    def gauss(self, mu, sigma):
        pass
    ...

_inst = Random()
seed = _inst.seed
random = _inst.random
randrange = _inst.randrange
randint = _inst.randint
choice = _inst.choice
shuffle = _inst.shuffle
sample = _inst.sample
choices = _inst.choices
gauss = _inst.gauss

...

Ссылаться на


Нелегко настаивать на написании колонки. Если вы считаете, что эта статья полезна для вас, не забудьте поставить лайк. Спасибо за поддержку!


Отсканируйте QR-код в WeChat, чтобы получить оригиналы новейших технологий