В анализе данных, очистке данных и обработке наборов данных, помимо использования, мы знакомы с
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
...
Ссылаться на
- [1] python docs: random --- генерировать псевдослучайные числа
- [2] github: python/cpython/Lib/random.py
Нелегко настаивать на написании колонки. Если вы считаете, что эта статья полезна для вас, не забудьте поставить лайк. Спасибо за поддержку!
- Персональный сайт:kenblog.top
- сайт на гитхабе:kenblikylee.github.io
Отсканируйте QR-код в WeChat, чтобы получить оригиналы новейших технологий