@@ -7,10 +7,13 @@ class PseudoRandom:
77 # Переменная класса для хранения seed генератора псевдослучайных чисел
88 _seed = None
99
10+
11+ # -------------------- Основные функции генерации случайных чисел --------------------
12+
1013 @classmethod
11- def set_seed (cls , seed = None ) -> None :
14+ def set_seed (cls , seed : Any = None ) -> None :
1215 """
13- Установка нового значения seed для генератора псевдослучайных чисел .
16+ Установка нового значения seed.
1417
1518 seed - любой объект, который можно преобразовать в строку.
1619 """
@@ -19,9 +22,8 @@ def set_seed(cls, seed=None) -> None:
1922
2023 @staticmethod
2124 def _get_next_seed_state (current_seed : int ) -> int :
22- """
23- Вспомогательная функция - меняет состояние зерна.
24- Используется линейный конгруэнтный метод для сильного изменения зерна на каждом шаге.
25+ """
26+ Вспомогательная функция - меняет состояние зерна с помощью линейного конгруэнтного метода.
2527 (Константы взяты из Borland C/C++ runtime library.)
2628 """
2729 return (current_seed * 22695477 + 1 ) & 0xFFFFFFFF
@@ -62,11 +64,17 @@ def random() -> float:
6264 raw_str = str (raw_int ).zfill (16 )
6365 return float ("0." + raw_str )
6466
67+
68+ # -------------------- Числовые функции --------------------
69+
6570 @staticmethod
6671 def random_from_range (start : int , end : int ) -> int :
6772 """Возвращает случайно выбранный элемент из диапазона [start, end]."""
6873 return true_round ((end - start ) * (PseudoRandom .random ()) + start )
6974
75+
76+ # -------------------- Функции для чисел с плавающей точкой --------------------
77+
7078 @staticmethod
7179 def random_from_float_range (start : int | float , end : int | float ) -> float :
7280 """
@@ -76,11 +84,17 @@ def random_from_float_range(start: int | float, end: int | float) -> float:
7684 """
7785 return ((end - start ) * (PseudoRandom .random ()) + start )
7886
87+
88+ # -------------------- Байтовые функции --------------------
89+
7990 @staticmethod
8091 def random_bytes (count : int ) -> bytes :
8192 """Возвращает случайные байты в количестве count."""
8293 return bytes ([PseudoRandom .random_from_range (0 , 255 ) for _ in range (count )])
8394
95+
96+ # -------------------- Функции для последовательностей --------------------
97+
8498 @staticmethod
8599 def choice (array : list [Any ]) -> Any :
86100 """Возвращает случайно выбранный элемент из массива."""
0 commit comments