lab5
/
generator.py
49 строк · 1.8 Кб
1import random2
3
4class Generator:5"""63. Составить файл из статистических данных, содержащий от 50 до 80
7целых чисел, среди которых количество различных вариантов должно
8быть не менее 10 и не более 20 (числа могут быть как одного, так и разных
9знаков).
10"""
11
12@staticmethod13def generate_list_of_number(14amount_of_numbers: int,15values: tuple[int, int],16freq: tuple[int, int]17) -> list[...]:18# составить вар. ряд с частотами19# оч медленное решение при малом количестве вариантов------------------20rands = dict()21sum_freq = 022while sum_freq < amount_of_numbers:23rand_val = random.randint(values[0], values[1])24rand_freq = random.randint(freq[0], freq[1])25if rands.get(rand_val, "not") == "not":26rands[rand_val] = rand_freq27sum_freq += rand_freq28#------------------------------------------29
30# подбить сумму частот до треб. кол. чисел31while sum_freq != amount_of_numbers:32for n in rands.keys():33if sum_freq == amount_of_numbers:34break35if rands[n] >= freq[0] + 1:36rands[n] -= 137sum_freq -= 138
39# составить список случайных чисел40stats = []41for n in rands.keys():42stats += [n] * rands[n]43random.shuffle(stats)44
45return stats46
47
48if __name__ == "__main__":49Generator.generate_list_of_number(100, (-10, 10), (10, 20))50