2013-11-12 1 views
2
import random 
def list_2d_generate(rows, columns, low_range, high_range): 
    float_list = [] 
    matrix1 = [[0]*columns for i in range(rows)] 
    for i in range(rows): 
     for j in range(columns): 
      floats = random.uniform(low_range, high_range) 
      matrix1.insert(j, floats) 
    return matrix1 

Я должен создать матрицу с размером, определенным пользователем, и для каждого элемента в этой матрице генерирует случайное поплавок с использованием random.uniform. Выше мой код, но он помещает все числа, генерируемые вне матрицы (добавляет их в список, а не внутри списка).создание матрицы со случайно сгенерированными номерами

ответ

2

попробуйте вместо этого:

import random 
def makematrix(x,y,minnum, maxnum): 
    matrix = [] 
    for row in range(x): 
     matrix.append([]) 
     for col in range(y): 
      matrix[row].append(random.uniform(minnum,maxnum)) 
    return matrix 

print(makematrix(4,4,0,100)) 

Пример вывода:

[[44.75502455476652, 28.664480955351777, 32.656439723011175, 3.9675096554774303] [61.990473239473566, 55.16751027710425, 62.20529230301345, 53.641004392485584], [1.4753516149572543, 8.391386895268615, 61.87234529817771, 11.364854440314732], [21.122758368045947, 62.155653114217145, 85.20532313391281, 97.60326478339135]] 
+0

Есть способ форматирования вывода на самом деле выглядит как матрица и без [] скобок? – Artifex

+0

вы можете прокручивать матрицу с помощью пары 'for' петель и форматировать ее, как вам угодно. Это формат по умолчанию при печати списка –

1

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

Вместо генерации матрицы и затем заполнить его, создать его со значениями:

import random 
def list_2d_generate(rows, columns, low_range, high_range): 
    return [ 
    [random.uniform(low_range, high_range) 
     for _ in xrange(columns)] 
    for _ in xrange(rows)]