lab5

Форк
0
/
generator.py 
49 строк · 1.8 Кб
1
import random
2

3

4
class Generator:
5
    """
6
        3. Составить файл из статистических данных, содержащий от 50 до 80
7
        целых чисел, среди которых количество различных вариантов должно
8
        быть не менее 10 и не более 20 (числа могут быть как одного, так и разных
9
        знаков).
10
    """
11

12
    @staticmethod
13
    def generate_list_of_number(
14
            amount_of_numbers: int,
15
            values: tuple[int, int],
16
            freq: tuple[int, int]
17
    ) -> list[...]:
18
        # составить вар. ряд с частотами
19
        # оч медленное решение при малом количестве вариантов------------------
20
        rands = dict()
21
        sum_freq = 0
22
        while sum_freq < amount_of_numbers:
23
            rand_val = random.randint(values[0], values[1])
24
            rand_freq = random.randint(freq[0], freq[1])
25
            if rands.get(rand_val, "not") == "not":
26
                rands[rand_val] = rand_freq
27
                sum_freq += rand_freq
28
        #------------------------------------------
29

30
        # подбить сумму частот до треб. кол. чисел
31
        while sum_freq != amount_of_numbers:
32
            for n in rands.keys():
33
                if sum_freq == amount_of_numbers:
34
                    break
35
                if rands[n] >= freq[0] + 1:
36
                    rands[n] -= 1
37
                    sum_freq -= 1
38

39
        # составить список случайных чисел
40
        stats = []
41
        for n in rands.keys():
42
            stats += [n] * rands[n]
43
        random.shuffle(stats)
44

45
        return stats
46

47

48
if __name__ == "__main__":
49
    Generator.generate_list_of_number(100, (-10, 10), (10, 20))
50

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.