我已经用图论术语阐述了这个问题,但概念化是不必要的。
我想要做的是,使用 Python 生成一个由 0 和 1 组成的矩阵,其中每行都有相同数量的 1,每列都有相同数量的 1。当行数(发送节点)不等于列数(接收节点)时,行数将与列数不同——这是我允许的。
对我来说这样做是有意义的numpy
,但可能还有其他包(例如networkx
?)那会有所帮助。
这是我想要用所需的输入和输出编写的函数:
n_pre = 4 # number of nodes available to send a connection
n_post = 4 # number of nodes available to receive a connection
p = 0.5 # proportion of all possible connections that exist
mat = generate_mat(n_pre, n_post, p)
print mat
例如,输出为:
[[0, 1, 0, 1],
[1, 0, 1, 0],
[1, 1, 0, 0],
[0, 0, 1, 1]]
请注意,每一列和每一行都有两个。除了这个约束之外,这些位置应该是随机的(并且随着该函数的调用而变化)。
用图论术语来说,这意味着每个节点的入度为 2,出度为 2(所有可能连接的 50%,如p = 0.5
).