Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有概率的简单变异_Python_Random_Probability_Genetic Algorithm_Mutate - Fatal编程技术网

Python 具有概率的简单变异

Python 具有概率的简单变异,python,random,probability,genetic-algorithm,mutate,Python,Random,Probability,Genetic Algorithm,Mutate,根据下面的代码部分,我正在尝试实现一个自动和随机的变异过程 data = [0,1,0,0,0,0,0,1,0,0,1,1,0,0,1] data[random.randint(0,len(data)-1)]=random.randrange(0,1) print(data) 该代码是我发现的其他一些帖子的改编,尽管它每次都随机地用0或1改变一个值。我要求这种情况发生的概率只有一定的概率,比如0.05的突变概率,而不是总是有保证的 此外,通常0会被0替换,因此输出不会发生变化,因此我想将

根据下面的代码部分,我正在尝试实现一个自动和随机的变异过程

data = [0,1,0,0,0,0,0,1,0,0,1,1,0,0,1]

data[random.randint(0,len(data)-1)]=random.randrange(0,1)

print(data)

该代码是我发现的其他一些帖子的改编,尽管它每次都随机地用0或1改变一个值。我要求这种情况发生的概率只有一定的概率,比如0.05的突变概率,而不是总是有保证的


此外,通常0会被0替换,因此输出不会发生变化,因此我想将其限制为0只会变为1,1会变为0

我非常感谢您帮助我解决这两个问题。

请继续

以选择的概率对任何值进行变异 随机选择职位 选择位置后,在0和1之间切换 恢复

以选择的概率对任何值进行变异 随机选择职位 选择位置后,在0和1之间切换
您可以执行以下操作:

对于数据中的每个元素,仅当随机函数生成的随机值小于定义的变异概率时,才将其变异为1-val

例如:

import random

mutation_prob = 0.05

data = [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1]

mutated_data = [1 - x if random.random() < mutation_prob else x for x in data]
如果应根据整个数据确定突变,您可以执行以下操作:

mutation_prob = 0.05

data = [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1]

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

您可以执行以下操作:

对于数据中的每个元素,仅当随机函数生成的随机值小于定义的变异概率时,才将其变异为1-val

例如:

import random

mutation_prob = 0.05

data = [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1]

mutated_data = [1 - x if random.random() < mutation_prob else x for x in data]
如果应根据整个数据确定突变,您可以执行以下操作:

mutation_prob = 0.05

data = [0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1]

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

请用您尝试过的代码更新您的问题。天哪。。。您不仅在应该使用randrange的地方使用了randint,而且在应该使用randint的时候也使用了randrange。你总是写一个零。此外,通常0被0替换,因此输出没有变化,所以我想限制它,使0只会变为1,而1会变为0。大约一半的时间,是吗?也许你可以想出一个规则,告诉你用什么概率来设置值,这就解释了设置值实际上不会翻转它的可能性。不管怎样,你有没有试着找到你想要的东西?或者你可以想出一种方法,例如,将0到1之间的一个随机数转换成某件事发生的X概率?提示:概率的最大可能值是什么?“概率的最小可能值是多少?”superbrain感谢你让我注意到这一点。一般来说,我对编码相当陌生,即使在文档的帮助下,我的理解也相当基本,所以我想在尝试改编其他代码时,我把它们混在了一起。我会更深入地研究它并牢记在心。干杯请用您尝试过的代码更新您的问题。天哪。。。您不仅在应该使用randrange的地方使用了randint,而且在应该使用randint的时候也使用了randrange。你总是写一个零。此外,通常0被0替换,因此输出没有变化,所以我想限制它,使0只会变为1,而1会变为0。大约一半的时间,是吗?也许你可以想出一个规则,告诉你用什么概率来设置值,这就解释了设置值实际上不会翻转它的可能性。不管怎样,你有没有试着找到你想要的东西?或者你可以想出一种方法,例如,将0到1之间的一个随机数转换成某件事发生的X概率?提示:概率的最大可能值是什么?“概率的最小可能值是多少?”superbrain感谢你让我注意到这一点。一般来说,我对编码相当陌生,即使在文档的帮助下,我的理解也相当基本,所以我想在尝试改编其他代码时,我把它们混在了一起。我会更深入地研究它并牢记在心。干杯在这里,每个位置都有5%的几率变异,而不仅仅是一个随机位置。不过,这方面的问题并不完全清楚。这可能正是他们想要的。@Wups我想说,如果这是他们想要的,他们就不会麻烦地选择一个随机索引来更改…@Wups更改了我对这两种情况的解决方案。谢谢你的反馈!我感谢您提供并解释这两个选项,@Wups这是一个非常好的观点-感谢您提出它!第一种方法与我所追求的差不多,因为我只想单独更改索引,而不是整个数据集。在这里,每个位置都有5%的机会发生变异,而不仅仅是一个随机位置。不过,这方面的问题并不完全清楚。这可能正是他们想要的。@Wups我想说,如果这是他们想要的,他们就不会麻烦地选择一个随机索引来更改…@Wups更改了我对bo的解决方案
例。谢谢你的反馈!我感谢您提供并解释这两个选项,@Wups这是一个非常好的观点-感谢您提出它!第一种方法就是我想要的,因为我只想单独更改索引,而不是整个数据集。谢谢你的回答!你能解释一下range10的功能吗?@Gfizz这只是为了演示,展示10种可能的变异尝试谢谢你的回答!你能解释一下range10的功能吗?@Gfizz这只是为了演示,展示10种可能的突变尝试