我有一个列表列表m
,我需要修改它
我需要每行的和大于A
,每列的和要小于B
我有这样的东西
x = 5 #or other number, not relevant
rows = len(m)
cols = len(m[0])
for r in range(rows):
while sum(m[r]) < A:
c = randint(0, cols-1)
m[r][c] += x
for c in range(cols):
cant = sum([m[r][c] for r in range(rows)])
while cant > B:
r = randint(0, rows-1)
if m[r][c] >= x: #I don't want negatives
m[r][c] -= x
我的问题是:我需要同时满足这两个条件,这样,在第二个for
之后,我不确定第一个条件是否仍然满足。在
有什么建议可以同时满足这两个条件,当然,最好的执行?我完全可以考虑使用numpy
编辑(示例)
^{pr2}$我可能需要添加
这是一种用于生成随机初始种群的遗传算法,其限制条件是使它们成为可能的解,而我需要运行这个像80次这样得到不同的可能解
像这样的事情应该很有意思:
注意事项
<=
,而不是你的问题中指出的<
,因为这是numpy支持的。在不过,这会让你有个大概的想法。在
NumPy解决方案:
我选择忽略
m
的原始内容—在您的示例中,它都是零。在相关问题 更多 >
编程相关推荐