Python 复制项目并根据机会将其添加到列表中
函数包含3个参数: 病毒(病毒列表)。mutationProb(只有在繁殖时才有0-1机会变异)和reproductionProb(繁殖时有0-1机会变异)。因此,0.2,0.4的浮动将给它40%的繁殖机会,如果它繁殖,20%的变异机会 我已经编写了mutate函数,它工作正常:Python 复制项目并根据机会将其添加到列表中,python,python-3.x,list,random,append,Python,Python 3.x,List,Random,Append,函数包含3个参数: 病毒(病毒列表)。mutationProb(只有在繁殖时才有0-1机会变异)和reproductionProb(繁殖时有0-1机会变异)。因此,0.2,0.4的浮动将给它40%的繁殖机会,如果它繁殖,20%的变异机会 我已经编写了mutate函数,它工作正常: def mutate(virus): # choose random index to change index = random.randint(0, len(virus) - 1) # m
def mutate(virus):
# choose random index to change
index = random.randint(0, len(virus) - 1)
# make sure you are not using the previous char by removing it from
# the mutations to choose from
mutations = [i for i in 'ATCG' if i != virus[index]]
# swap out the char at index with a random mutation
return virus[:index] + random.choice(mutations) + virus[index+1:]
但是我的复制不会将新病毒添加到列表中如果病毒复制(基于复制Prob),新病毒应该添加到现有的病毒列表中,无论是否发生变异(基于变异Prob进行变异)
每种病毒都有各自的繁殖机会
def reproduce(viruses, mutationProb, reproductionProb):
for virus in viruses:
if random.random() < reproductionProb:
if random.random() < mutationProb:
mutate(virus)
viruses.append(virus)
else:
viruses.append(virus)
return viruses
def reproduction(病毒、突变Prob、复制Prob):
对于病毒中的病毒:
如果为random.random()
有人知道为什么我的函数还没有这样做吗?正如我所见,它根据突变概率附加突变病毒,否则它附加病毒而不发生突变。正如Carcigenicate所说,你要确保
random.random()
的计算结果如你所料为真,即10次计算4次(或其他)
就你的代码而言,如果你总是想复制一个符合复制标准(40%几率)的病毒,然后只有符合变异标准(20%几率)的病毒才会发生变异,那么你可以稍微简化你的代码
def reproduce(viruses, mutationProb, reproductionProb):
for virus in viruses:
if random.random() < reproductionProb:
if random.random() < mutationProb:
mutate(virus)
viruses.append(virus)
return viruses
def reproduction(病毒、突变Prob、复制Prob):
对于病毒中的病毒:
如果为random.random()
由于这两个附件都依赖于random.random()
为真,我将验证该条件的评估是否符合您的预期。是的,它只能在复制样本后输入和预期输出时发生变异。@Ayodhyankitpul输入的病毒[ATCG,GATC]1.0,1.0:output:[ATCG,GATC,TTCG,GAGC]是的!我原来有,但我改变了它,因为它不工作