Python функция, которая генерирует случайные массивы целых чисел не работает - PullRequest
0 голосов
/ 19 марта 2020

Мне нужно создать функцию, которая генерирует случайные массивы целых чисел между a и b включительно, где a и b определяют диапазон, а M и N определяют размер выходного массива. Я что-то сделал, но кажется, что он не работает должным образом и Я не знаю точно, как я могу определить размер выходного массива, куда именно поместить M и N ..... Здесь это мой код:

import random 

def Rand(start, end, num): 
    res = [] 

    for j in range(num): 
        res.append(random.randint(start, end)) 

    return res 

# Driver Code 
num = 10
start = 20
end = 40
print(Rand(start, end, num)) 

1 Ответ

2 голосов
/ 19 марта 2020

Вам просто нужны два вложенных цикла (или понимание вложенного списка)

Например:

import random

def random_array(start, end, a, b):

    return [[random.randint(start, end) for _ in range(a)] for _ in range(b)]

# Driver Code
a = 10
b = 5
start = 20
end = 40
print(random_array(start, end, a, b))

Который, в моем случае, выдает:

[[35, 27, 30, 27, 26, 37, 38, 27, 36, 34], [24, 24, 29, 35, 27, 38, 38, 37, 24, 24], [35, 20, 38, 25, 26, 20, 31, 29, 27, 33], [37, 36, 34, 20, 27, 30, 33, 26, 24, 26], [28, 35, 20, 31, 33, 36, 29, 25, 36, 36]]

Если вы не хотите использовать списочные выражения (хотя вам, вероятно, следует), это будет эквивалентно:

def random_array(start, end,  a, b):
    res = []
    for _ in range(b):
        inner = []
        for _ in range(a):
            inner.append(random.randint(start, end))
        res.append(inner)
    return res

Заключительное примечание: Согласно PEP-8 вы не должны Не начинайте имя функции с заглавной буквы.

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