尝试生成30个随机数字符串作为字符串

时间:2014-12-19 04:35:54

标签: 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 = combo{10};

            for t = 3:30
               mut(t) = num2str(randi([0,9]));
            end
  end

我目前不能做的是仅改变每第n个数字,或确保每3个数字中的第一个数字在1-4之间,同时保持其他数字在0-9之间。

如果它有用:combo{10}代表110202132224154246176368198100

1 个答案:

答案 0 :(得分:3)

通过改变字符串并不完全理解你的内容,但要获得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_r是:

299334478355384287226314472383