Алгоритм работы программы
- Программа запрашивает, какой тип данных хочет получить пользователь — целые числа, числа с плавающей точкой, символы (буквы), слова (в данном случае, наборы случайных символов).
- Вызывается соответствующая функция, которая возвращает либо список случайных объектов, указанного типа, либо строку из случайных символов. При выполнении кода функций у пользователя запрашиваются дополнительные сведения о желаемой последовательности: количество объектов, нижняя и верхняя граница диапазона и другое.
- Полученная последовательность записывается в файл.
Как получить случайное число
Чтобы получить случайное целое число в заданном диапазоне я использовала следующую формулу. Додумалась до нее сама, так что возможно есть более элегантные решения (например, здесь использовать вместо функции int
функцию round
):
int(random.random() * (maximum - minimum + 1)) + minimum
random.random()
дает число с плавающей точкой в диапазоне от 0 до 0,999999… (единицу не включает), но при округлении ее можно получить.- Если умножить это число на верхнюю границу диапазона, то получим дробные случайные числа от нуля до этого числа. Поскольку функция
int
просто отбрасывает дробную часть, то верхнюю границу получить нельзя. - Если прибавить к верхней границе единицу, то получим дробные случайные числа от нуля до следующего за верхней границей числа. При отбрасывании дробной части сможем получать верхнюю границу.
- Если нижняя граница начинается не с нуля, то нужно из максимума вычесть минимум, чтобы вычислить диапазон. После преобразования в целое число минимум надо прибавить.
Исходный код программы
def list_random_integers():
qty = int(input('Количество значений: '))
minimum = int(input('Нижняя граница: '))
maximum = int(input('Верхняя граница: '))
sample = []
for i in range(qty):
sample.append(int(random.random() * (maximum - minimum + 1)) + minimum)
return sample
def list_random_floats():
qty = int(input('Количество значений: '))
accuracy = int(input('Точность представления числа: '))
minimum = float(input('Нижняя граница: '))
maximum = float(input('Верхняя граница: '))
sample = []
for i in range(qty):
num = random.random() * (maximum - minimum) + minimum
num = round(num,accuracy)
sample.append(num)
return sample
def str_random_symbols():
qty = int(input('Количество символов: '))
symbols = ''
for i in range(qty):
num = int(random.random() * (122 - 97 + 1)) + 97
symbols = symbols + chr(num)
return symbols
def list_random_strings():
qty = int(input('Количество слов: '))
sample = []
for i in range(qty):
string = ''
num = int(random.random() * (4 - 1 + 1)) + 1 #случайная длина слова
j = 0
while j < num:
char = chr(int(random.random() * (105 - 97 + 1)) + 97)
string = string + char
j += 1
sample.append(string)
return sample
def write_in_file(t,sample):
fname = input('Имя файла: ')
f = open(fname,'w')
if t != '3':
for i in sample:
f.write(str(i)+' ')
else:
f.write(sample)
f.close()
import random
t = input('Целые числа(1), дробные числа(2), символы(3), слова(4): ')
if t == '1':
sample = list_random_integers()
elif t == '2':
sample = list_random_floats()
elif t == '3':
sample = str_random_symbols()
elif t == '4':
sample = list_random_strings()
write_in_file(t,sample)