在给定代码中,列表x和y是在0-N之间随机分配的数字,概率为0.5。我随机选择一个代理并使用func1删除它。我正在使用func2添加一个代理。现在我已经定义了两个类对象x1和x2。输入参数' state1' x2的x2是从x1获得的,并且类似地,#2; state2' x1的x1是从x2获得的。
我无法找到传递参数的正确方法' state2'和' state1'在x1和x2中。 从我的代码的最后四行可以看出,state1和state2应该在x1和x2之前定义,但我不能这样做,因为类对象x1和x2应该像我一样首先定义。
我想在这里实现的是:我有两个人口N1和N2。我从N1中随机选择一个代理(比如state1)并将它(保留其state = state1)添加到N2。同时,我从N2中删除一个代理(比如state2)并将其添加(保留其state = state2)到N1群。这个过程会以固定的时间间隔重复进行。
有人可以告诉我一个正确的方法,让代码运行吗?
import random
class func():
def __init__(self, N, state):
self.N = N
self.x = []
self.y = []
agents = range(self.N)
for i in range(self.N):
if random.random() < 0.5:
self.x.append(i)
else:
self.y.append(i)
agent = random.choice(agents)
def func1(self, agent):
if self.agent in self.x:
self.x.remove(agent)
return 1
elif self.agent in self.y:
self.y.remove(agent)
return 2
def func2(self, state):
if state == 1:
self.x.append(N)
return self.x
elif state == 2:
self.y.append(N)
return self.y
if __name__=='__main__':
N1 = 100
N2 = 100
x1 = state(N1, state2)
x2 = state(N2, state1)
state1 = func.func1()
state2 = func.func1()
答案 0 :(得分:1)
您可以从状态构造函数中删除第二个参数,稍后再使用set_state(state)
之类的单独方法传递它。
E.g:
x1 = state(N1)
x2 = state(N2)
state1 = func.func1()
state2 = func.func2()
setState(x1, state2)
setState(x2, state1)
在state函数中,您必须将state参数和相关代码剥离到新函数setState。我没有看到那些代码,所以我不能在这里显示。