Skip to main content

Расширенная библиотека для генерации случайных значений в 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


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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xsrandom-0.1.0-py3-none-any.whl (31.7 kB view details)

Uploaded Python 3

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

Hashes for xsrandom-0.1.0.tar.gz
Algorithm Hash digest
SHA256 8f73c06619067d65ddf386b25b42bb8eb84f3f815ff24f01f5e05bc851bd5d83
MD5 776ce5e87c663d5508cbf3572da2128e
BLAKE2b-256 e6c7f83136a66bf862944f8d8ae09d206c15a7a66c4f31e2f49abe4164ed3d3f

See more details on using hashes here.

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

Hashes for xsrandom-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ab0e7ac67ae11bbb1fb1c6ac19ff19bdd92ee493f27bdf9d88fc986056700c48
MD5 64bcdad47ae13c858fc77b8ddb76d56f
BLAKE2b-256 eac92f209fe775a7fb7439fba55772f9dd8890a85de892e677d8b6c1087da95d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page