Python: мне нужно создать случайную матрицу NxN с определенными спецификациями - PullRequest
0 голосов
/ 14 марта 2020

У меня математическая домашняя задача, которая доставляет мне немало хлопот. Мне нужно написать python функцию, которая создает случайную матрицу, такую ​​что:

  • матрица NxN
  • Каждая недиагональная запись (??? где ? ≠ ?) является случайное число в [0,1)
  • Диагональная запись ??? - это случайное число в [?, ? + 1)

Вот что у меня есть, но я не Не думаю, что я понимаю индексирование для массива, поэтому у меня возникают проблемы

def randmat(n):
    matrix = np.ndarray((n,n), dtype=float)
    for i,j in range(0,n):
        if i != j:
            matrix[ij] = np.random.rand(1)
        else:
            matrix[ij] = n + np.random.rand(1)
    return matrix

Если вы знаете, что я делаю неправильно, любая помощь будет признательна!

Ответы [ 2 ]

0 голосов
/ 14 марта 2020

Если вы используете numpy, доступ к элементам матрицы может быть выполнен двумя способами: matrix[i][j] или matrix[i, j]

Также, в for l oop вы пытаетесь получить два значения из range, что на самом деле дает только одно. Таким образом, вы не можете l oop, как это с i и j.

Я бы предложил следующее решение для вашей проблемы

def randmat(n):
    matrix = np.random.rand(n, n)
    for i in range(n):
        matrix[i, i] = n + np.random.rand(1)
    return matrix

numpy.random.rand это хорошо Функция, которая дает вам матрицу желаемой формы с элементами, случайно распределенными между 0 и 1. Вот документация: https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.random.rand.html#numpy .random.rand

Тогда вам нужно только итерируйте один раз и измените элементы на главной диагонали.

Надеюсь, это поможет

0 голосов
/ 14 марта 2020

Пожалуйста, попробуйте код ниже:

def randmat(n):
    matrix = np.ndarray((n,n), dtype=float)
    for i in range(n):
        for j in range(n):
            if i != j:
                matrix[i,j] = np.random.rand(1)
            else:
                matrix[i,j] = n + np.random.rand(1)
    return matrix
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...