Случайные числа в заданных диапазонах

Сгенерировать случайные целое и вещественное числа, а также символ в пределах диапазонов, которые вводит пользователь.

В языке программирования Python в модуле random есть одноименная функция random(), которая генерирует вещественное число от 0 до 1.

Если умножить полученное таким образом случайное число на длину диапазона, то получим число от 0 до конца длины диапазона. Чтобы найти длину диапазона, надо из его максимальной границы вычесть минимальную.

Если далее прибавить минимальную границу диапазона, то произойдет смещение и будет получено случайное число от минимальной границы до максимальной.

Отличие получения целого числа от вещественного заключается в том, что в первом случае, если максимальная граница входит в диапазон, то надо прибавить 1 к длине диапазона и после умножения преобразовать в целое, отбросив дробную часть.

Случайный символ получают по той же формуле, что и целое. Символы преобразуют к их целочисленным кодам, получают случайное число и далее преобразуют его в символ.

from random import random
 
m1 = int(input())
m2 = int(input())
n = int(random() * (m2 - m1 + 1)) + m1
print(n)
 
m1 = float(input())
m2 = float(input())
n = random() * (m2 - m1) + m1
print(round(n, 3))
 
m1 = ord(input())
m2 = ord(input())
n = int(random() * (m2 - m1 + 1)) + m1
print(chr(n))

Пример выполнения кода:

-10
10
8
0
1.1
0.892
h
t
s

Также следует иметь в виду, что в модуле random есть функция randint(), позволяющая сразу получать целое в заданном диапазоне (обе границы входят в диапазон):

>>> from random import randint
>>> randint(3, 5)
3
>>> randint(3, 5)
3
>>> randint(3, 5)
3
>>> randint(3, 5)
4
>>> randint(3, 5)
5

Создано

Обновлено