问题描述
按照下面的代码部分,我正在尝试实现一个自动且随机的变异过程。
lib
该代码是我发现的其他一些帖子的改编,尽管它每次都会随机地将值替换为0或1。我要求仅以一定的概率(例如0.05的突变几率)出现),而不是总是得到保证。
此外,通常将0替换为0,因此输出没有变化,因此我想以某种方式限制它,即0只会变成1,而1变成0。
我非常感谢您为解决这两个问题所提供的帮助。
解决方法
恢复
- 以选定的概率对任何值进行变异
- 随机选择职位
- 选择位置后,在
0
和1
之间切换
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]