Matlab 正在尝试将包含30个随机数的字符串生成为字符串

Matlab 正在尝试将包含30个随机数的字符串生成为字符串,matlab,random,mutators,Matlab,Random,Mutators,我正在做一个遗传算法,我在变异方面遇到了麻烦。我想做的是生成30个随机字符,在我的有限状态机中作为10个状态(10组3位数),每个3位数的第一位数必须在1-4之间,而其他2位数必须在0-9之间 生成数字后,我必须将其转换为30个字符的字符串。我也只想每五位数变异一次 这就是我目前正在尝试的: % mutate probability 0.2 if (rand < 0.2) % pick best chromosome to mutate mut

我正在做一个遗传算法,我在变异方面遇到了麻烦。我想做的是生成30个随机字符,在我的有限状态机中作为10个状态(10组3位数),每个3位数的第一位数必须在1-4之间,而其他2位数必须在0-9之间

生成数字后,我必须将其转换为30个字符的字符串。我也只想每五位数变异一次

这就是我目前正在尝试的:

 % mutate probability 0.2
 if (rand < 0.2)
        % pick best chromosome to mutate
            mut = combo{10};

            for t = 3:30
               mut(t) = num2str(randi([0,9]));
            end
  end
%变异概率0.2
如果(兰特<0.2)
%选择最好的染色体进行变异
mut=combo{10};
对于t=3:30
mut(t)=num2str(randi([0,9]);
结束
结束
我目前不能做的是每N个数字进行一次变异,或者确保每3个数字中的第一个数字在1-4之间,而其他数字保持在0-9之间


如果有用的话:
combo{10}
表示
110202132224154246176368198100

不能完全理解通过对字符串进行变异得到的内容,但是要得到一个包含30个随机数的字符串,您可以简单地执行以下操作:

str_r = sprintf('%d',  randi([0,9],1,30));
# modify selected characters.
str_r(1:3:end) =  sprintf('%d',  randi([1,4],1,10));
示例结果
str\u r
为:

299334478355384287226314472383

虽然不能完全理解通过对字符串进行变异得到的结果,但要得到一个由30个随机数组成的字符串,只需执行以下操作:

str_r = sprintf('%d',  randi([0,9],1,30));
# modify selected characters.
str_r(1:3:end) =  sprintf('%d',  randi([1,4],1,10));
示例结果
str\u r
为:

299334478355384287226314472383

虽然不能完全理解通过对字符串进行变异得到的结果,但要得到一个由30个随机数组成的字符串,只需执行以下操作:

str_r = sprintf('%d',  randi([0,9],1,30));
# modify selected characters.
str_r(1:3:end) =  sprintf('%d',  randi([1,4],1,10));
示例结果
str\u r
为:

299334478355384287226314472383

虽然不能完全理解通过对字符串进行变异得到的结果,但要得到一个由30个随机数组成的字符串,只需执行以下操作:

str_r = sprintf('%d',  randi([0,9],1,30));
# modify selected characters.
str_r(1:3:end) =  sprintf('%d',  randi([1,4],1,10));
示例结果
str\u r
为:

299334478355384287226314472383


改变字符串只意味着改变几个数字,如果我用错了,很抱歉。我的字符串由10组3位数字组成,全部合并在一起,因此每组的第一位和第二位数字必须介于1-4之间,但其他两位数字必须介于0-9之间,例如198 486 376。。。有可能做到这一点吗?@JmJ当我尝试使用
first_gen=[“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”
第一代(i)={str\u r}
我得到的错误
从单元格转换为字符是不可能的。
你知道如何解决这个问题吗?要从str\r中获取单元格,只需使用:
c=num2cell(str\r)
@JmJ可能是它的新问题,或者它取决于代码的上下文。你可以创建新的问题,并提供更多的细节和例子。改变字符串只意味着改变几个数字,对不起,如果我用错了。我的字符串由10组3位数字组成,全部合并在一起,因此每组的第一位和第二位数字必须介于1-4之间,但其他两位数字必须介于0-9之间,例如198 486 376。。。有可能做到这一点吗?@JmJ当我尝试使用
first_gen=[“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”
第一代(i)={str\u r}
我得到的错误
从单元格转换为字符是不可能的。
你知道如何解决这个问题吗?要从str\r中获取单元格,只需使用:
c=num2cell(str\r)
@JmJ可能是它的新问题,或者它取决于代码的上下文。你可以创建新的问题,并提供更多的细节和例子。改变字符串只意味着改变几个数字,对不起,如果我用错了。我的字符串由10组3位数字组成,全部合并在一起,因此每组的第一位和第二位数字必须介于1-4之间,但其他两位数字必须介于0-9之间,例如198 486 376。。。有可能做到这一点吗?@JmJ当我尝试使用
first_gen=[“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”
第一代(i)={str\u r}
我得到的错误
从单元格转换为字符是不可能的。
你知道如何解决这个问题吗?要从str\r中获取单元格,只需使用:
c=num2cell(str\r)
@JmJ可能是它的新问题,或者它取决于代码的上下文。你可以创建新的问题,并提供更多的细节和例子。改变字符串只意味着改变几个数字,对不起,如果我用错了。我的字符串由10组3位数字组成,全部合并在一起,因此每组的第一位和第二位数字必须介于1-4之间,但其他两位数字必须介于0-9之间,例如198 486 376。。。有可能做到这一点吗?@JmJ当我尝试使用
first_gen=[“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”;“”
第一代(i)={str\u r}
我得到的错误
从单元格转换为字符是不可能的。
你知道如何解决这个问题吗?要从str\r中获取单元格,只需使用:
c=num2cell(str\r)
@JmJ可能是它的新问题,或者它取决于代码的上下文。您可以创建新问题,并提供更多细节和示例。