numpy.random.RandomState.zipf
метод
- random.RandomState.zipf(a, size=None)
-
Генерирует выборки из распределения Ципфа.
Выборка производится из распределения Ципфа с заданным параметром
a> 1.Распределение Ципфа (также известное как распределение Цеты) — это дискретное вероятностное распределение, удовлетворяющее закону Ципфа: частота элемента обратно пропорциональна его рангу в таблице частот.
Примечание
Новый код должен использовать метод
zipfэкземпляраGenerator; см. Быстрый старт.- Параметры:
-
- afloat или array_like из float
-
Параметр распределения. Должно быть больше 1.
- sizeint или кортеж из int, необязательно
-
Форма выходных данных. Если заданная форма, например,
(m, n, k), то генерируютсяm * n * kвыборок. Если size равноNone(по умолчанию), возвращается одно значение, еслиaявляется скаляром. В противном случае, генерируютсяnp.array(a).sizeвыборок.
- Возвращает:
-
- outndarray или скаляр
-
Сгенерированные выборки из параметризованного распределения Ципфа.
См. также
scipy.stats.zipf-
функция плотности вероятности, распределение или кумулятивная функция распределения и т.д.
random.Generator.zipf-
который следует использовать в новом коде.
Примечания
Плотность вероятности для распределения Ципфа
\[p(k) = \frac{k^{-a}}{\zeta(a)},\]для целых чисел \(k \geq 1\), где \(\zeta\) — дзета-функция Римана.
Названа в честь американского лингвиста Джорджа Кингсли Ципфа, который отметил, что частота любого слова в выборке языка обратно пропорциональна его рангу в таблице частот.
Ссылки
[1]Zipf, G. K., “Selected Studies of the Principle of Relative Frequency in Language,” Кембридж, Массачусетс: Harvard Univ. Press, 1932.
Примеры
Генерация выборок из распределения:
>>> a = 4.0 >>> n = 20000 >>> s = np.random.zipf(a, n)
Отображение гистограммы выборок вместе с ожидаемой гистограммой, основанной на функции плотности вероятности:
>>> import matplotlib.pyplot as plt >>> from scipy.special import zeta
bincountпредоставляет быструю гистограмму для небольших целых чисел.>>> count = np.bincount(s) >>> k = np.arange(1, s.max() + 1)
>>> plt.bar(k, count[1:], alpha=0.5, label='sample count') >>> plt.plot(k, n*(k**-a)/zeta(a), 'k.-', alpha=0.5, ... label='expected count') >>> plt.semilogy() >>> plt.grid(alpha=0.4) >>> plt.legend() >>> plt.title(f'Zipf sample, a={a}, size={n}') >>> plt.show()
© 2005–2024 NumPy Developers
Licensed under the 3-clause BSD License.
https://numpy.org/doc/2.0/reference/random/generated/numpy.random.RandomState.zipf.html