制作随机整数矩阵

时间:2018-10-26 16:23:11

标签: python matrix random

我需要编写一个函数,该函数接受行和列的数量并返回大小为rows × columns的矩阵,该矩阵填充了介于-10,10之间的随机值。

**需要在没有NumPy,Pandas等的情况下完成。

我写:

Mat = []

def mf(r,c):
    for i in range (0,c):
        Mat.append([])
    for i in range (0,r):
        for j in range (0,c):
            Mat[i].append(j)
            Mat[i][j]=0

    print(Mat)
mf(3,4)

如何在-10,10范围内插入随机值?

任何帮助,技巧或解决方案都将不胜感激,我是一位具有非常基础知识的python初学者。

非常感谢!

1 个答案:

答案 0 :(得分:0)

一种选择是使用random模块和嵌套的list comprehension来做到这一点:

>>> import random
>>> def randarray(r, c, lower=-10, upper=10, _randint=random.randint):
...     return [[_randint(lower, upper) for col in range(c)]
...             for row in range(r)]
... 
>>> randarray(3, 2)
[[-1, -5], [-7, -8], [8, 7]]
>>> randarray(4, 2)
[[9, 1], [7, 5], [-1, -3], [-7, 9]]

在签名中使用_randint=random.randint的原因是它将功能绑定到功能randarray的本地名称。如果您有一个大的矩阵可以重复调用,那么它将比对该函数进行全局查找要快。

列表理解本质上是在说:

for each row:
    for each column:
        <random integer>

请注意,randint()的两端都包含在内。

如果您确实需要优化,请查看itertools.repeat()