首页 > 解决方案 > 制作随机整数矩阵

问题描述

我需要编写一个函数来获取行数和列数,并返回一个大小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 初学者。

提前谢谢了!

标签: pythonmatrixrandom

解决方案


一种选择是使用random模块和嵌套列表理解来执行此操作:

>>> 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。如果您有一个大型矩阵,其中反复调用 this,这将比该函数的全局查找更快。

列表理解本质上是说:

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

请注意,这randint()包括两端。

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


推荐阅读