具有概率的简单变异

问题描述

按照下面的代码部分,我正在尝试实现一个自动且随机的变异过程。

lib

该代码是我发现的其他一些帖子的改编,尽管它每次都会随机地将值替换为0或1。我要求仅以一定的概率(例如0.05的突变几率)出现),而不是总是得到保证。

此外,通常将0替换为0,因此输出没有变化,因此我想以某种方式限制它,即0只会变成1,而1变成0。

我非常感谢您为解决这两个问题所提供的帮助。

解决方法

恢复

  • 以选定的概率对任何值进行变异
  • 随机选择职位
  • 选择位置后,在01之间切换
def mutate(data,proba=0.05):
    if random.random() < proba:
        data[random.randrange(len(data))] ^= 1    

if __name__ == '__main__':
    data = [0,1,1]
    for i in range(10):
        mutate(data)
        print(data)
,
import random

def changeData(data):
  seed = random.randint(0,1000)
  # probability of 0.05 (50 / 1000)
  if seed <= 50:
     indexToChange = random.randint(0,len(data)-1)
  # change 0 with 1 and viceversa
     data[indexToChange] = 1 if data[indexToChange]  == 0 else 0
 
if __name__== '__main__':
   data = [0,1]
   for i in range(0,100):
     changeData(data)
   print(data)
,

您可以执行以下操作:

仅当console.log(useParams()); // actual result {id:100,name: 'test',age: undefined,city: undefined} // expected result {id:100,city: 'myCity'} 函数生成的随机值小于定义的突变概率时,才对data中的每个元素进行突变(1 - val

例如:

random()

如果应从整体数据上确定突变,则可以执行以下操作:

import random

mutation_prob = 0.05

data = [0,1]

mutated_data = [1 - x if random.random() < mutation_prob else x for x in data]

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...