23. Объяснить как работает поиск максимального случайного числа в цикле и сказать результат выполнения
Условие задачи Нужно сказать результат выполнения кода ниже и объяснить как он работает
from random import randint
x = 100
y = 0
for i in range(x):
z = x + randint(0, x)
if z > y:
y = z
print(f"{y = }")
Спойлеры к решению
Подсказки
randint(0, x)возвращает случайное целое число от0доxвключительно.- Так как
x = 100, выражениеrandint(0, x)даёт число от0до100. - Значит
z = x + randint(0, x)даёт число от100до200. - Переменная
yхранит максимальное значениеz, которое встретилось за 100 итераций. - Точный результат заранее определить нельзя, потому что используется случайность.
Решение
from random import randint
x = 100
y = 0
for i in range(x):
z = x + randint(0, x)
if z > y:
y = z
print(f"{y = }")
Точный вывод заранее предсказать нельзя, потому что используется случайная функция randint().
Но можно определить диапазон результата:
y = число от 100 до 200
Например, возможный вывод:
y = 200
Или:
y = 198
Как работает код:
z = x + randint(0, x)
Так как x = 100, значение z каждый раз будет случайным числом от 100 до 200 включительно.
Цикл выполняется 100 раз:
for i in range(x):
На каждой итерации создаётся новое случайное значение z. Если оно больше текущего y, то y обновляется:
if z > y:
y = z
В итоге y будет максимальным случайным числом, которое выпало за 100 попыток. Чаще всего результат будет близок к 200, но строго гарантировать 200 нельзя.