Skip to content

Commit a7f5c4b

Browse files
authored
docs: small text fixes
1 parent 2398014 commit a7f5c4b

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

README.md

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@
1414
Меня не устраивало, что модуль `random` в Python генерирует недостаточно случайные числа ( *особенно при нескольких последовательных генерациях* ), а встроенный в Python модуль `round` довольно "грубо" округляет числа ( *`round(1.5)` = 2 и в то же время `round(2.5)` = 2* ), поэтому я решил написать *свою* библиотеку для генерации псевдослучайных чисел — более простую и с наибольшей энтропией.
1515

1616
> [!WARNING]
17-
> PyCustomRand **не является** криптографически стойкой библиотекой и **не предназначена** для использования в системах безопасности!
17+
> PyCustomRand *пока* **не является** криптографически стойкой библиотекой и **не предназначена** для использования в системах безопасности!
1818
> Используйте [secrets](https://docs.python.org/3/library/secrets.html#module-secrets) модуль.
1919
2020
## 📌 Зачем нужна эта библиотека, если есть уже встроенные в Python `random` и `round`?
2121
PyCustomRand писался как альтернатива этим двум встроенным модулям. Вот главные особенности и возможности библиотеки:
2222

23-
* Данная библиотека **проще** написана — весь код закомментирован, лёгок и понятен. В основе реализации генератора псевдослучайных чисел лежит *несложный* алгоритм (использующий системное время) поэтому библиотеку легко кастомизировать/расширять/дополнять под себя.
23+
* Данная библиотека **проще** написана — весь код закомментирован, лёгок и понятен. В основе реализации генератора псевдослучайных чисел лежит *несложный* алгоритм, использующий системное время, поэтому библиотеку легко кастомизировать, расширять или дополнять под себя.
2424
* В большинстве своём PyCustomRand выдаёт более *"энтропичный"* результат при нескольких генерациях подряд по сравнению со встроенным `random`-модулем.
2525
* <details>
2626
<summary>📊 Сравнение с диаграммами</summary>
2727
28-
PyCustomRand демонстрирует **на 173%** более высокую кучность распределения по сравнению со стандартной библиотекой `random` в тестах на **1,000,000** итераций.
28+
PyCustomRand демонстрирует **на 173%** более высокую кучность распределения по сравнению со стандартной библиотекой `random` в тестах на **1.000.000** итераций.
2929

3030
<img src="https://i.imgur.com/qxYdxmD.png">
3131
@@ -52,23 +52,23 @@ PyCustomRand писался как альтернатива этим двум в
5252
</tr>
5353
</table>
5454
</details>
55-
* Библиотека включает в себя все самые главные функции из [оригинальной](https://docs.python.org/3/library/random.html) Python-библиотеки, но только местами улучшенные и упрощённые (например: `random_integer` может выдавать сгенерированный результат, делимый на заданное число из диапазона; результат функции `random_float` можно округлять и пр.)
55+
* Библиотека включает в себя все самые главные функции из [оригинальной](https://docs.python.org/3/library/random.html) Python-библиотеки, но только местами улучшенные и упрощённые (например: `random_integer` может выдавать сгенерированный результат, делимый на заданное число из диапазона; результат функции `random_float` можно округлять и так далее)
5656
* <details>
5757
<summary>📑 Список функций</summary>
5858

59-
* Генерация целых чисел (`random_integer`, `randrange`, `gen_random_number`).
59+
* Генерация целых чисел (`gen_random_number`, `randrange`, `random_integer`).
6060
* Генерация вещественных чисел (`random`, `random_float`).
6161
* Поддержка статистических распределений: Нормальное (Гаусс), Треугольное, Экспоненциальное, Биномиальное.
6262
* Инструменты для последовательностей: выбор случайного элемента (`choice`), выборка с весами (`choices`), перемешивание (`shuffle`) и выборка уникальных элементов (`sample`).
63-
* Инициализация («посев») последовательности генератора псевдослучайных чисел (`set_seed`, `_get_next_seed_state`).
63+
* Инициализация ("посев") последовательности генератора псевдослучайных чисел (`set_seed`, `_get_next_seed_state`).
6464
</details>
6565
* Также библиотека имеет дополнительные утилиты, полезные для разработки веба/игр: генерация UUID v4, случайных HEX-цветов (например, `#ff05a1`), случайных байт, случайных булевых значений (`True`/`False`) с настраиваемым шансом.
66-
* Имеется модуль собственного честного округления — `true_round`. Функция округляет числа привычным математическим способом (0.5 всегда вверх по модулю), а также исправляет погрешности плавающей точки (например, "проблему 2.675").
66+
* Имеется собственный модуль округления — `true_round`. Функция округляет числа привычным математическим способом (0.5 всегда вверх по модулю), а также исправляет погрешности плавающей точки (например, "проблему 2.675").
6767
* Код покрыт unit-тестами (чему соответствует badge в начале README), также имеется встроенный модуль диагностики (`check_distribution`), который позволяет в любой момент проверить равномерность распределения генератора.
6868

6969
Да, у проекта всё же имеются некоторые минусы:
70-
* Рандом, основанный на времени, требует небольшого ожидания (`time.sleep()` на 0.1 микросекунду), соответственно, при гигантских итерациях PyCustomRand будет уступать встроенному модулю `random` во времени.
71-
* Некоторые функции библиотеки PyCustomRand (функции выборки, распределений) настолько просто написаны, что могут быть недостаточно оптимизированными для гигантских выборок (+ добавляется накапливающееся микро-ожидание из-за проблемы выше).
70+
* Рандом, основанный на времени, требует небольшого ожидания (`time.sleep()` на 0.1 микросекунду), соответственно, при гигантских итерациях PyCustomRand будет немного уступать встроенному модулю `random` во времени.
71+
* Некоторые функции библиотеки PyCustomRand (функции выборки, распределений) настолько просто написаны, что могут быть недостаточно оптимизированными для гигантских выборок (в добавок учитывается небольшое накапливающееся ожидание из-за проблемы выше).
7272

7373
## 📦 Установка
7474
Установка библиотеки происходит через стандартный менеджер пакетов для Python:
@@ -78,7 +78,8 @@ pip install pycustomrand
7878

7979
<details>
8080
<summary>➕ Альтернативные способы установки</summary>
81-
81+
Если у вас возникли проблемы с пакетным менеджером Python или прочие ошибки, то PyCustomRand можно установить другими способами:
82+
8283
<br>
8384

8485
* Скачивание пакета на официальной странице PyPI:
@@ -102,7 +103,7 @@ pip install pycustomrand
102103

103104
* `set_seed(seed=None)`
104105
Устанавливает начальное состояние генератора.
105-
* `seed`: Любой объект, который преобразуется в строку — число/строка/список и др. Если `None` — используется системное время (случайная последовательность).
106+
* `seed`: Любой объект, который преобразуется в строку — число/строка/список и др. Если `None`"посев" сбрасывается, и используется системное время (случайная последовательность).
106107

107108
* `_get_next_seed_state(current_seed)`
108109
Внутренняя функция для обновления состояния сида (LCG алгоритм).
@@ -239,7 +240,7 @@ print(sample(array, k=2, counts=[1, 2, 3, 4])) # Список из k уника
239240

240241
* `binomialvariate(n=1, p=0.5)` — Биномиальное распределение (алиас: `binomial`).
241242
Количество успехов в серии из `n` независимых испытаний с вероятностью успеха `p`.
242-
Используется в моделировании финансов и математике. *Примеры*: Сколько раз сейчас выпадет орёл, если подбросить монету 10 раз — `binomialvariate(n=10, p=0.5)`.
243+
Используется в математике и моделировании финансов. *Примеры*: Сколько раз сейчас выпадет орёл, если подбросить монету 10 раз — `binomialvariate(n=10, p=0.5)`.
243244

244245
<details>
245246
<summary>🧩 Примеры 5</summary>
@@ -331,7 +332,7 @@ python -m unittest tests/test_round.py
331332
```
332333

333334
### 1.2. Запуск конкретного теста в конкретном модуле
334-
Если вы модифицируете библиотеку, и у вас постоянно не проходит проверку какой-то один конкретный тест, то вы можете не затрачивать время на запуск всех тестов — вам достаточно запустить один конкретный тест конкретного модуля, например:
335+
Если вы модифицируете библиотеку, и у вас постоянно не проходит проверку какой-то один конкретный тест, то вы можете не тратить время на запуск всех тестов — вам достаточно запустить один конкретный тест конкретного модуля, например:
335336

336337
```python
337338
from tests.test_round import TestTrueRound
@@ -379,7 +380,7 @@ if __name__ == "__main__":
379380
PyCustomRand/ # Корень репозитория
380381
├── .github/
381382
│ └── workflows/
382-
│ └── python-app.yml # Конфигурация GitHub Actions: автоматический запуск тестов при каждом Push/PR
383+
│ └── python-app.yml # Конфигурация GH Actions: автоматический запуск тестов при каждом Push/PR
383384
384385
├── pycustomrand/ # Исходный код пакета
385386
│ ├── __init__.py # Точка входа: инициализация пакета и алиасы функций
@@ -409,7 +410,7 @@ PyCustomRand/ # Корень репозитория
409410
```bash
410411
python -m unittest discover tests
411412
```
412-
5. Запушьте изменения (`git push origin feature/SomeFeature`);
413+
5. "Запушьте" изменения (`git push origin feature/SomeFeature`);
413414
6. Откройте **Pull Request**.
414415

415416
## 📄 Лицензия

0 commit comments

Comments
 (0)