@@ -73,8 +73,8 @@ def random() -> float:
7373 def randrange (start : int , stop : int = None , step : int = 1 ) -> int :
7474 """
7575 Возвращает случайное число из диапазона [start, stop).
76- Верхняя граница НЕ включается.
77-
76+ Верхняя граница НЕ включается. Можно указывать один аргумент.
77+
7878 Примеры:
7979 randrange(10) -> от 0 до 9
8080 randrange(1, 10) -> от 1 до 9
@@ -84,14 +84,39 @@ def randrange(start: int, stop: int = None, step: int = 1) -> int:
8484 # Если передан один аргумент, например randrange(10), то считаем его за stop, а start за 0
8585 stop = start
8686 start = 0
87-
87+
8888 range_object = range (start , stop , step )
89-
89+
9090 if not range_object :
9191 raise ValueError ("Пустой диапазон для генерации" )
92-
92+
9393 return range_object [int (PseudoRandom .random () * len (range_object ))]
9494
95+ @staticmethod
96+ def random_integer (start : int , end : int = None , step : int = 1 ) -> int :
97+ """
98+ Возвращает случайное число из диапазона [start, end].
99+ Включительны и обязательны обе границы.
100+
101+ step (опциональный аргумент) - число должно делиться на step (относительно start)
102+ """
103+ if step == 0 :
104+ raise ValueError ("Step (шаг) не может быть равен 0" )
105+
106+ # Длина диапазона
107+ width = end - start
108+
109+ # Количество шагов = (разница / шаг) + 1
110+ n_steps = int (width / step ) + 1
111+
112+ if n_steps <= 0 :
113+ raise ValueError ("Неверные границы диапазона для заданного шага" )
114+
115+ # Выбор случайного индекса шага
116+ random_step_index = int (PseudoRandom .random () * n_steps )
117+
118+ return start + (random_step_index * step )
119+
95120
96121 # -------------------- Функции для чисел с плавающей точкой --------------------
97122
0 commit comments