Matlab 根据字母表生成具有特定概率的随机字符串(randsrc问题)

Matlab 根据字母表生成具有特定概率的随机字符串(randsrc问题),matlab,Matlab,所以我熟悉randsrc,我可以从给定概率的随机整数字母表中创建它。假设我有这个字母表 alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'}; prob=[0.08167 0.01492 0.02782 0.04254 0.12702 0.02228 0.02015 0.06094 0.06966 0.00153 0.00

所以我熟悉randsrc,我可以从给定概率的随机整数字母表中创建它。假设我有这个字母表

alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
prob=[0.08167 0.01492 0.02782 0.04254 0.12702 0.02228 0.02015 0.06094 0.06966 0.00153 0.00772 0.04025 0.02406 0.06749 0.07507 0.01929 0.00095 0.05987 0.06327 0.09056 0.02758 0.00978 0.02360 0.00150 0.01974 0.00074];
注意:字母表是一个具有1x26尺寸的单元格,而prob是1x26双数组

我可以创建这样的随机字符串

s = 'abcdefghijklmnopqrstuvwxyz';
%find number of random characters to choose from
numRands = length(s); 
%specify length of random string to generate
sLength = 10;
%generate random string
randString = s(ceil(rand(1,sLength)*numRands));
这种方法的问题是,我无法找到一种方法来考虑概率。所以我一直想做的是:

randomString =randsrc(10,1,[alphabet; prob]);
但这会显示在控制台中:

Error using vertcat 
Dimensions of arrays being concatenated are not consistent. 
Consider converting input arrays to the same type before concatenating.

Error in test (line 8) 
randomString = randsrc(10,1,[alphabet; prob]);
在这方面,如果我这样做:

alphabet = [097:122];
randsrc将起作用

但不管我怎么做,我都无法给出randsrc字符字母表。我之所以要给出randsrc字符字母表,是因为我的字母表比第一个字母表复杂得多,如下所示:

alphabet = {'aa','ab','ac'...'az','ba','bb','bc'...);
无论如何,我可以让randsrc得到字符字母表而不是整数。或者我应该尝试创建自己的函数来实现这一点


提前感谢

您可以使用
randsrc
将随机索引生成到
字母表中

indices = randsrc(10,1,[1:numel(alphabet); prob]);
randomString = [alphabet{indices}];

有人因为一个类似的项目而错过了假期,老兄,我欠你一杯啤酒!!!谢谢,节日快乐。@ceid vg:我今天下午开一家,假装你在买。)