Заполнить матрицу случайными числами в пределах диапазона? - PullRequest
1 голос
/ 14 октября 2019

Я новичок в программировании и Python. Я пытаюсь создать матрицу (6, 6) со случайными числами в определенном диапазоне. Каждое число должно быть дважды. Должен ли я использовать матрицу, многомерный массив или список списков? Я хотел бы знать, какой самый простой способ добиться этого.

Это то, что у меня сейчас есть:

rows = 6
columns = 6
range(0, 18)

matrix = [[0 for x in range(rows)] for y in range(columns)]

# Loop into matrix to fill with random numbers withing the range property.
# Matrix should have the same number twice.
for row in matrix:
    print(row)

Ответы [ 2 ]

3 голосов
/ 14 октября 2019

Вы можете:

  • Создать список из 36 чисел, каждое значение которых 0-17 дважды, как 2 * list(range(18))
  • Перемешать список чисел
  • Разделите список на равные куски по 6

В результате вы получите матрицу, соответствующую вашим требованиям, с использованием только стандартной библиотеки.

Примерно так:

import random

nums = 2 * list(range(18))
random.shuffle(nums)
matrix = [nums[i:i+6] for i in range(0, 36, 6)]
3 голосов
/ 14 октября 2019

Если вы ищете целые числа, это так просто, как это:

import numpy as np
import random
number_sample = list(range(18))*2 #Get two times numbers from 0 to 17
random.shuffle(number_sample) #Shuffle said numbers
np.array(number_sample).reshape(6,6) #Reshape into matrix

Вывод:

array([[ 1,  0,  5,  1,  8, 15],
       [ 9,  3, 15, 17,  0, 14],
       [ 7,  9, 11,  7, 16, 13],
       [ 4, 10,  8, 12,  5,  6],
       [ 6, 11,  4, 14,  3, 13],
       [10, 16,  2, 17,  2, 12]])

Редактировать: Изменен ответ, чтобы отразить изменения в вашем вопросе

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