Расширенная библиотека для генерации случайных значений в Python
Project description
xsrandom
Расширенная библиотека для генерации случайных значений в Python, предоставляющая больше возможностей, чем стандартный модуль random.
Установка
pip install xsrandom
Основные модули
1. Базовые функции (core)
import xsrandom
# Инициализация генератора случайных чисел
xsrandom.seed(12345) # Фиксированное начальное значение
xsrandom.seed() # Использование текущего времени
xsrandom.seed_from_entropy() # Использование дополнительной энтропии
state = xsrandom.getstate() # Получение текущего состояния
xsrandom.setstate(state) # Установка сохраненного состояния
# Базовые функции
value = xsrandom.random() # Случайное число [0.0, 1.0)
value = xsrandom.randint(1, 10) # Случайное целое число [1, 10]
value = xsrandom.uniform(1, 10) # Случайное число с плавающей точкой [1, 10)
value = xsrandom.bit_generator(32) # Случайное битовое значение указанной ширины
value = xsrandom.randrange(1, 10, 2) # Случайный элемент из диапазона range(1, 10, 2)
# Работа с коллекциями
item = xsrandom.choice(['a', 'b', 'c']) # Случайный элемент из списка
items = xsrandom.choices(['a', 'b', 'c'], k=2) # k элементов с повторами
items = xsrandom.sample(['a', 'b', 'c'], 2) # k элементов без повторов
xsrandom.shuffle(my_list) # Перемешивание списка на месте
# Дополнительные функции
value = xsrandom.random_bool(0.7) # Случайное булево значение с указанной вероятностью True
value = xsrandom.dice(6, 2) # Бросок 2 шестигранных кубиков
coins = xsrandom.flip_coin(5) # Подбрасывание монеты 5 раз
bytes_data = xsrandom.randbytes(16) # 16 случайных байт
byte_arr = xsrandom.byte_array(16) # Массив случайных байт
value = xsrandom.float_precision(1.5, 3.5, 2) # Случайное число с указанной точностью
value = xsrandom.range_step(0, 10, 2) # Случайный элемент из [0, 2, 4, 6, 8]
char = xsrandom.random_character() # Случайный символ
sign = xsrandom.random_sign() # Случайный знак (+1 или -1)
value = xsrandom.randbelow(100) # Случайное число в диапазоне [0, n)
value = xsrandom.fract() # Случайная дробная часть [0.0, 1.0)
value = xsrandom.dual_distribution(0.3, lambda: xsrandom.normal(), lambda: xsrandom.uniform(0, 1))
value = xsrandom.odd_even(0.5) # Случайное нечетное или четное число
value = xsrandom.prime_below(100) # Случайное простое число меньше указанного значения
2. Генерация строк (strings)
import xsrandom
# Базовая генерация строк
value = xsrandom.string(10) # Случайная строка длины 10 (буквы и цифры)
value = xsrandom.string(10, pattern="letters") # Только буквы
value = xsrandom.string(10, pattern="digits") # Только цифры
value = xsrandom.string(10, pattern="printable") # Все печатаемые символы
value = xsrandom.string(10, pattern="lowercase") # Строчные буквы
value = xsrandom.string(10, pattern="uppercase") # Заглавные буквы
value = xsrandom.string(10, pattern="hex") # Шестнадцатеричные символы
value = xsrandom.string(10, pattern="binary") # Двоичные символы
value = xsrandom.string(10, charset="ACGT") # Пользовательский набор символов
# Специализированные строки
value = xsrandom.ascii_string(10) # ASCII строка
value = xsrandom.ascii_string(10, include_special_chars=True) # С спецсимволами
value = xsrandom.hex_string(8) # Шестнадцатеричная строка
value = xsrandom.hex_string(8, prefix="0x") # С префиксом 0x
value = xsrandom.binary_string(8) # Двоичная строка
value = xsrandom.binary_string(16, format_with_spaces=True) # С пробелами каждые 8 бит
value = xsrandom.binary_string(8, prefix="0b") # С префиксом 0b
# Пароли
value = xsrandom.password(12, strength="weak") # Слабый пароль
value = xsrandom.password(12, strength="medium") # Средний пароль (заглавные, строчные, цифры)
value = xsrandom.password(12, strength="strong") # Сильный пароль (с спецсимволами)
value = xsrandom.password(16, strength="very_strong") # Очень сильный пароль
# Текстовые данные
value = xsrandom.username() # Случайное имя пользователя
value = xsrandom.word() # Случайное слово
value = xsrandom.sentence() # Случайное предложение
value = xsrandom.paragraph() # Случайный абзац
value = xsrandom.lorem_ipsum(3) # Lorem ipsum из 3 абзацев
# Интернет-данные
value = xsrandom.email() # Случайный email
value = xsrandom.domain_name() # Случайное доменное имя
value = xsrandom.url() # Случайный URL
value = xsrandom.url(include_path=True, include_query=True) # С путем и запросом
value = xsrandom.html_color() # Случайный HTML-цвет
value = xsrandom.random_slug() # Случайный slug для URL
# Другие строковые функции
value = xsrandom.regex_string(r"\d{3}-\d{2}-\d{4}") # Строка по регулярному выражению
value = xsrandom.random_hashtags(3) # 3 случайных хэштега
value = xsrandom.random_emoji() # Случайный эмодзи
3. Статистические распределения (distributions)
import xsrandom
# Непрерывные распределения
value = xsrandom.normal() # Нормальное распределение (мю=0, сигма=1)
value = xsrandom.normal(10, 2) # Нормальное с заданными параметрами
value = xsrandom.lognormal(0, 1) # Логнормальное распределение
value = xsrandom.triangular(0, 10, 5) # Треугольное распределение
value = xsrandom.beta(2, 5) # Бета-распределение
value = xsrandom.gamma(2, 2) # Гамма-распределение
value = xsrandom.exponential(1.5) # Экспоненциальное распределение
value = xsrandom.weibull(1.5) # Распределение Вейбулла
value = xsrandom.pareto(1.5) # Распределение Парето
value = xsrandom.vonmises(0, 1) # Распределение фон Мизеса
value = xsrandom.cauchy() # Распределение Коши
value = xsrandom.laplace() # Распределение Лапласа
value = xsrandom.logistic() # Логистическое распределение
value = xsrandom.rayleigh() # Распределение Рэлея
value = xsrandom.chisquare(5) # Хи-квадрат распределение
value = xsrandom.student_t(10) # Распределение Стьюдента
value = xsrandom.f(5, 10) # F-распределение
# Дискретные распределения
value = xsrandom.poisson(5) # Распределение Пуассона
value = xsrandom.binomial(10, 0.5) # Биномиальное распределение
value = xsrandom.zipf(2) # Распределение Зипфа
value = xsrandom.discrete_uniform(1, 10) # Дискретное равномерное распределение
value = xsrandom.geometric(0.3) # Геометрическое распределение
value = xsrandom.negative_binomial(5, 0.3) # Отрицательное биномиальное распределение
value = xsrandom.hypergeometric(10, 5, 20) # Гипергеометрическое распределение
# Многомерные распределения
value = xsrandom.dirichlet([1, 1, 1]) # Распределение Дирихле
import numpy as np
mean = np.array([0, 0])
cov = np.array([[1, 0.5], [0.5, 1]])
value = xsrandom.multivariate_normal(mean, cov) # Многомерное нормальное
# Составные распределения
def my_distribution():
return xsrandom.normal(0, 1)
def another_distribution():
return xsrandom.exponential(1)
value = xsrandom.mixture([my_distribution, another_distribution], [0.7, 0.3])
# Пользовательские распределения
def my_pdf(x):
return 0.5 * x if 0 <= x <= 2 else 0
value = xsrandom.custom_distribution(my_pdf, 0, 2) # По функции плотности вероятности
4. Даты и время (datetime)
import xsrandom
import datetime
# Основные функции
value = xsrandom.date() # Случайная дата от 1970-01-01 до сегодня
value = xsrandom.date("2020-01-01", "2020-12-31") # В указанном диапазоне
value = xsrandom.time() # Случайное время
value = xsrandom.time("08:00:00", "17:00:00") # В указанном диапазоне
value = xsrandom.datetime() # Случайные дата и время
value = xsrandom.timestamp() # Случайная временная метка Unix
# Относительные даты
value = xsrandom.future_date() # Случайная дата в будущем
value = xsrandom.future_date(min_days=10, max_days=30) # В заданном диапазоне
value = xsrandom.past_date() # Случайная дата в прошлом
value = xsrandom.time_period() # Случайный временной период в секундах
value = xsrandom.time_delta() # Случайный временной интервал
# Компоненты даты и времени
value = xsrandom.year() # Случайный год
value = xsrandom.year(2000, 2020) # В указанном диапазоне
value = xsrandom.month() # Случайный месяц (число)
value = xsrandom.month_name() # Случайное название месяца
value = xsrandom.month_name("ru") # На русском языке
value = xsrandom.day_of_month() # Случайный день месяца
value = xsrandom.weekday() # Случайный день недели (число)
value = xsrandom.day_of_week_name() # Название дня недели
value = xsrandom.day_of_week_name("ru") # На русском языке
value = xsrandom.hour() # Случайный час (0-23)
value = xsrandom.hour(12) # Случайный час (1-12)
value = xsrandom.minute() # Случайная минута
value = xsrandom.second() # Случайная секунда
value = xsrandom.millisecond() # Случайная миллисекунда
value = xsrandom.timezone() # Случайный часовой пояс
# Форматы даты и времени
value = xsrandom.iso8601() # Случайная дата в формате ISO8601
value = xsrandom.iso8601_date() # Только дата в формате ISO8601
value = xsrandom.iso8601_time() # Только время в формате ISO8601
value = xsrandom.rfc3339() # Дата в формате RFC3339
value = xsrandom.unix_time() # Временная метка Unix
# Бизнес-даты
value = xsrandom.business_date() # Случайная рабочая дата (пн-пт)
value = xsrandom.business_datetime() # Случайные дата и время в рабочие часы
holidays = [datetime.date(2023, 1, 1), datetime.date(2023, 12, 25)]
value = xsrandom.date_between_holidays(holidays) # Дата между праздниками
# Специальные интервалы
value = xsrandom.quarter() # Случайный квартал (1-4)
value = xsrandom.date_in_quarter() # Случайная дата в квартале
value = xsrandom.date_in_quarter(2, 2023) # Дата во 2-м квартале 2023
value = xsrandom.week_number() # Случайный номер недели (1-53)
value = xsrandom.date_in_week() # Случайная дата в неделе
value = xsrandom.date_with_age(18, 65) # Дата рождения для возраста 18-65 лет
# Строковые представления
value = xsrandom.duration_string() # Случайная длительность в формате "ЧЧ:ММ:СС"
value = xsrandom.cron_expression() # Случайное CRON-выражение
5. Случайные последовательности (sequences)
import xsrandom
# Перестановки и комбинации
value = xsrandom.permutation([1, 2, 3, 4, 5]) # Случайная перестановка
value = xsrandom.permutation([1, 2, 3, 4, 5], 3) # Перестановка 3 элементов
value = xsrandom.combination([1, 2, 3, 4, 5], 3) # Случайное сочетание
value = xsrandom.random_combination([1, 2, 3, 4, 5], 3, 2) # 2 случайных сочетания
# Подмножества и последовательности
value = xsrandom.subset([1, 2, 3, 4, 5]) # Случайное подмножество
value = xsrandom.subset([1, 2, 3, 4, 5], min_size=2, max_size=4) # С ограничениями размера
value = xsrandom.unique_sequence(10) # Последовательность из 10 уникальных чисел
value = xsrandom.unique_sequence(5, 10, 20) # 5 уникальных чисел в диапазоне [10, 20]
# Случайные блуждания и марковские цепи
value = xsrandom.random_walk() # Случайное блуждание с 10 шагами в 1D
value = xsrandom.random_walk(steps=20, dimensions=2) # 2D блуждание с 20 шагами
states = ["Солнечно", "Облачно", "Дождь"]
transitions = [
[0.7, 0.3, 0.0], # Переходы из состояния "Солнечно"
[0.4, 0.4, 0.2], # Переходы из состояния "Облачно"
[0.1, 0.5, 0.4] # Переходы из состояния "Дождь"
]
value = xsrandom.markov_sequence(states, transitions, length=7) # Марковская цепь
# Разбиения
value = xsrandom.random_partition(100, 5) # Разбиение числа 100 на 5 частей
value = xsrandom.random_partition(100, 5, min_value=10) # С минимальным значением 10
6. Криптографические функции
import xsrandom
# Токены и ключи
value = xsrandom.token_bytes(16) # 16 случайных байт
value = xsrandom.token_hex(16) # 16 байт в шестнадцатеричном формате
value = xsrandom.token_urlsafe(16) # URL-безопасный токен
# Идентификаторы
value = xsrandom.uuid() # Случайный UUID
value = xsrandom.random_hash("sha256") # Случайный хеш SHA-256
# Безопасные ключи и пароли
value = xsrandom.secure_key(32) # Криптографически стойкий ключ
value = xsrandom.secure_key(16, encoding="hex") # В шестнадцатеричном формате
value = xsrandom.secure_key(16, encoding="base64") # В формате base64
value = xsrandom.secure_pin(6) # Случайный PIN-код
value = xsrandom.secure_password(16) # Криптографически стойкий пароль
# Сетевые данные
value = xsrandom.random_ip() # Случайный IPv4 адрес
value = xsrandom.random_ipv6() # Случайный IPv6 адрес
value = xsrandom.random_mac() # Случайный MAC-адрес
7. Географические данные
import xsrandom
# Координаты
value = xsrandom.latitude() # Случайная широта (-90 до 90)
value = xsrandom.longitude() # Случайная долгота (-180 до 180)
value = xsrandom.coordinates() # Кортеж (широта, долгота)
value = xsrandom.point_on_earth() # Случайная точка на поверхности Земли
value = xsrandom.point_on_earth((55.7558, 37.6176), 10) # Точка в радиусе 10 км от Москвы
# Географические атрибуты
value = xsrandom.altitude() # Случайная высота над уровнем моря
value = xsrandom.country_code() # Случайный код страны
value = xsrandom.place_type() # Случайный тип места
Примеры использования
import xsrandom
# Установка начального значения для воспроизводимости
xsrandom.seed(12345)
# Генерация псевдослучайных чисел
print(f"Случайное число: {xsrandom.random()}")
print(f"Случайное целое число: {xsrandom.randint(1, 100)}")
print(f"Случайное число с плавающей точкой: {xsrandom.uniform(1.5, 3.5)}")
# Работа с коллекциями
fruits = ["яблоко", "апельсин", "банан", "груша", "киви"]
print(f"Случайный фрукт: {xsrandom.choice(fruits)}")
print(f"Случайная выборка из 3 фруктов: {xsrandom.sample(fruits, 3)}")
xsrandom.shuffle(fruits)
print(f"Перемешанный список фруктов: {fruits}")
# Генерация случайных строк
print(f"Случайная строка: {xsrandom.string(10)}")
print(f"Случайный пароль: {xsrandom.password(12, 'strong')}")
print(f"Случайный email: {xsrandom.email()}")
print(f"Случайное предложение: {xsrandom.sentence()}")
# Работа с распределениями
print(f"Нормальное распределение: {xsrandom.normal(10, 2)}")
print(f"Экспоненциальное распределение: {xsrandom.exponential(1.5)}")
print(f"Биномиальное распределение: {xsrandom.binomial(10, 0.5)}")
# Генерация случайных дат
print(f"Случайная дата: {xsrandom.date()}")
print(f"Случайная дата в будущем: {xsrandom.future_date(min_days=10, max_days=30)}")
print(f"Случайное время: {xsrandom.time()}")
print(f"Случайный день недели: {xsrandom.day_of_week_name()}")
# Работа с случайными последовательностями
print(f"Случайная перестановка: {xsrandom.permutation(range(1, 6))}")
print(f"Случайное подмножество: {xsrandom.subset([1, 2, 3, 4, 5])}")
print(f"Случайное блуждание в 2D: {xsrandom.random_walk(steps=5, dimensions=2)}")
# Географические данные
print(f"Случайные координаты: {xsrandom.coordinates()}")
print(f"Случайная точка на Земле: {xsrandom.point_on_earth()}")
Лицензия
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
xsrandom-0.1.0.tar.gz
(34.8 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
xsrandom-0.1.0-py3-none-any.whl
(31.7 kB
view details)
File details
Details for the file xsrandom-0.1.0.tar.gz.
File metadata
- Download URL: xsrandom-0.1.0.tar.gz
- Upload date:
- Size: 34.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8f73c06619067d65ddf386b25b42bb8eb84f3f815ff24f01f5e05bc851bd5d83
|
|
| MD5 |
776ce5e87c663d5508cbf3572da2128e
|
|
| BLAKE2b-256 |
e6c7f83136a66bf862944f8d8ae09d206c15a7a66c4f31e2f49abe4164ed3d3f
|
File details
Details for the file xsrandom-0.1.0-py3-none-any.whl.
File metadata
- Download URL: xsrandom-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab0e7ac67ae11bbb1fb1c6ac19ff19bdd92ee493f27bdf9d88fc986056700c48
|
|
| MD5 |
64bcdad47ae13c858fc77b8ddb76d56f
|
|
| BLAKE2b-256 |
eac92f209fe775a7fb7439fba55772f9dd8890a85de892e677d8b6c1087da95d
|