|
8 | 8 |
|
9 | 9 | </div> |
10 | 10 |
|
11 | | -**PyCustomRand** — это Python-библиотека для генерации **псевдослучайных чисел**, основанная на алгоритме, использующем системное время с наносекундной точностью (time-based). |
12 | | -Проект также включает в себя кастомную реализацию математического (а не банковского) округления. |
| 11 | +**PyCustomRand** — это Python-библиотека для генерации **псевдослучайных чисел**, основанная на алгоритме, использующем системное время с наносекундной точностью и линейный конгруэнтный метод. |
13 | 12 |
|
14 | | -Это авторский проект создан для изучения алгоритмов и альтернативных подходов к генерации случайных чисел. |
| 13 | +Этот авторский проект создан для изучения алгоритмов и альтернативных подходов к генерации случайных чисел и их округлении. |
15 | 14 | Меня не устраивало, что модуль `random` в Python генерирует недостаточно случайные числа ( *особенно при нескольких последовательных генерациях* ), а встроенный в Python модуль `round` довольно "грубо" округляет числа ( *`round(1.5)` = 2 и в то же время `round(2.5)` = 2* ), поэтому я решил написать *свою* библиотеку для генерации псевдослучайных чисел — более простую и с наибольшей энтропией. |
16 | 15 |
|
17 | 16 | > [!WARNING] |
18 | 17 | > PyCustomRand **не является** криптографически стойкой библиотекой и **не предназначена** для использования в системах безопасности! |
19 | 18 | > Используйте [secrets](https://docs.python.org/3/library/secrets.html#module-secrets) модуль. |
20 | 19 |
|
21 | | -## Основные возможности |
22 | | -Практически все функции PyCustomRand основаны на [оригинальной](https://docs.python.org/3/library/random.html) Python-библиотеке для генерации псевдослучайных чисел: |
23 | | -* Генерация случайных целых чисел заданной длины; |
24 | | -* Генерация случайных чисел с плавающей точкой в диапазоне `[0, 1)`; |
25 | | -* Генерация случайных чисел с плавающей точкой, распределёнными по математическим законам; |
26 | | -* Выбор случайного элемента из списка; |
27 | | -* Выборка случайных элементов из списка; |
28 | | -* Перемешивание списка; |
29 | | -* Вспомогательные функции - генерация случайного цвета, случайного uuid4, случайного bool; |
30 | | -* А также: округление кастомной функцией `true_round`. |
31 | | - |
32 | | -и т.д. |
| 20 | +## ✨ Основные возможности библиотеки |
| 21 | +* 🕰 Собственная реализация генератора псевдослучайных чисел: уникальный алгоритм, использующий системное время с точностью до наносекунд + линейный конгруэнтный метод. |
| 22 | +* 🎯 Наличие честного округления (`true_round`): функция округляет числа привычным математическим способом (0.5 всегда вверх по модулю), а также исправляет погрешности плавающей точки (например, "проблему 2.675"). |
| 23 | +* 🔢 Имеется полный набор функций для работы с числами и последовательностями, основанных на [оригинальной](https://docs.python.org/3/library/random.html) Python-библиотеке: |
| 24 | + * Генерация целых чисел (`random_integer`, `randrange`, `gen_random_number`). |
| 25 | + * Генерация вещественных чисел (`random`, `random_float`). |
| 26 | + * Поддержка статистических распределений: Нормальное (Гаусс), Треугольное, Экспоненциальное, Биномиальное. |
| 27 | + * Инструменты для последовательностей: выбор случайного элемента (`choice`), выборка с весами (`choices`), перемешивание (`shuffle`) и выборка уникальных элементов (`sample`). |
| 28 | +* 🛠 Присутствуют готовые утилиты для разработчиков: генерация UUID v4, генерация случайных HEX-цветов (например, `#ff05a1`), генерация случайных байт (`random_bytes`), случайные булевы значения (`True`/`False`) с настраиваемым шансом. |
| 29 | +* 📦 Zero-Dependency: библиотека написана на чистом Python и не требует установки сторонних зависимостей. Работает везде, где есть Python. |
| 30 | +* ✅ Надёжность: код покрыт unit-тестами, а встроенный модуль диагностики (`check_distribution`) позволяет в любой момент проверить равномерность распределения генератора. |
33 | 31 |
|
34 | 32 | ## Установка |
35 | 33 | Библиотека поддерживает установку через `pip`: |
|
0 commit comments