如何在矩阵数组中生成随机的1和0?

时间:2018-12-03 23:36:03

标签: python

我有一个矩阵,当前仅填充1。如何使它填充随机的1和0?

var a = c.Resolve<MyInterface>(serviceKey: "implementationA");
var b = c.Resolve<MyInterface>(serviceKey: "implementationB");

输出:

matrix5x5 = [[1 for row in range (5)] for col in range (5)]

for row in matrix5x5:
    for item in row:
        print(item,end=" ")
    print()
print("")

我想要类似的东西

1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1

我发现了有关使用1 0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 的一些知识,但是我不知道如何更改当前代码以包括上述内容。

3 个答案:

答案 0 :(得分:1)

如果您不介意使用numpy:

>>> import numpy as np
>>> np.random.randint(2, size=(5, 5))
array([[1, 0, 1, 0, 1],
       [1, 0, 1, 0, 0],
       [0, 0, 0, 1, 0],
       [1, 0, 0, 0, 1],
       [0, 1, 0, 0, 1]])

Numpy数组支持大多数涉及索引和迭代的列表操作,如果您真的很在意,可以将其转换为列表:

>>> np.random.randint(2, size=(5, 5)).tolist()
[[1, 0, 0, 0, 0], [0, 0, 0, 0, 1], [0, 0, 1, 0, 0], [1, 0, 1, 1, 1], [1, 0, 1, 0, 0]]

并且,如果出于某种奇怪的原因,您100%坚持使用香草Python,只需使用random模块和列表理解:

>>> import random
>>> [[random.randint(0,1) for j in range (5)] for i in range (5)]
[[0, 1, 0, 1, 1], [0, 1, 1, 1, 0], [0, 0, 1, 0, 1], [0, 0, 0, 0, 1], [1, 1, 1, 1, 1]]

答案 1 :(得分:1)

使用random包(而不是等效的numpy)修改代码:

matrix5x5 = [[random.randint(0,1) for _ in range(5)] for _ in range(5)]

for row in matrix5x5: 
    for item in row:
        print(item,end=" ") 
    print()
print("")

0 1 0 0 1 
0 1 0 1 0 
0 0 1 1 0 
0 0 0 1 0 
1 0 0 1 1 

但老实说,numpy使它变得更快,更简单!

答案 2 :(得分:0)

您可能想使用numpy。请执行以下操作:

import numpy as np
my_matrix = np.random.randint(2,size=(5,5))

这将创建一个随机的5 x 5矩阵,分别为0和1。