Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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
String 在MATLAB中生成随机词列表_String_Matlab_Loops_Random - Fatal编程技术网

String 在MATLAB中生成随机词列表

String 在MATLAB中生成随机词列表,string,matlab,loops,random,String,Matlab,Loops,Random,我需要生成一个m文件,该文件生成一个遵循特定规则的随机“伪单词”的大列表 脚本以集合的形式给出允许的字母,它们出现在单词中的概率。对于这个特殊的应用,一个单词可以有2到4个“音节”,它们可能由一个来自集合C的成员和一个来自V的成员组成,或者一个来自C,一个来自V,另一个来自V 下面的代码可以一次生成一个单词,但我希望能够一次生成50或100个单词 到目前为止,我得出的结论如下: clc word = []; wlist = {}; C = ['KGBNSLMTVx_']; prob_C = [0

我需要生成一个m文件,该文件生成一个遵循特定规则的随机“伪单词”的大列表

脚本以集合的形式给出允许的字母,它们出现在单词中的概率。对于这个特殊的应用,一个单词可以有2到4个“音节”,它们可能由一个来自集合C的成员和一个来自V的成员组成,或者一个来自C,一个来自V,另一个来自V

下面的代码可以一次生成一个单词,但我希望能够一次生成50或100个单词

到目前为止,我得出的结论如下:

clc
word = [];
wlist = {};
C = ['KGBNSLMTVx_']; prob_C = [0.13, 0.12, 0.11, 0.10, 0.107, 0.066, 
0.09, 0.066,0.066,     0.065, 0.06];
C2 = ['KLNT']; prob_C2 = [0.2575,0.2525,0.2475,0.2425];
V = ['AIUE']; prob_V = [0.275,0.265,0.245,0.24];
for m = 1:randint(1,1,[2 4])
add_C2 = mod(randint(1,1,[1,100]),6);
if add_C2 == 5
    syl = [randsample(C,1,true,prob_C) randsample(V,1,true,prob_V)
    randsample(C2,1,true,prob_C2)]; 
else
    syl = [randsample(C,1,true,prob_C) randsample(V,1,true,prob_V)];
end
word = [word syl];
end
new = char(word);
wlist = {wlist{:}, new};
disp(wlist')

将不胜感激。

以下代码为您的问题生成100个可接受的单词

clc, clear
nWords = 100;

wList = {};

C = 'KGBNSLMTVx_'; 
probC = [0.13, 0.12, 0.11, 0.10, 0.107, 0.066, 0.09, 0.066,0.066, 0.065, 0.06];

C2 = 'KLNT'; 
probC2 = [0.2575, 0.2525, 0.2475, 0.2425];

V = 'AIUE'; 
probV = [0.275,0.265,0.245,0.24];

probAddC2 = 0.16;

for i=1:nWords
    word = [];
    nSyl = randi([2 4]);
    for j = 1:nSyl
        syl = strcat(randsample(C,1,true,probC), randsample(V,1,true,probV));
        if rand < probAddC2
           syl = strcat(syl, randsample(C2,1,true,probC2));     
        end
        word = strcat(word, syl);
    end
    wList{end+1} = word;
end
wList'
clc,清除
nWords=100;
wList={};
C='KGBNSLMTVx_3;';
概率=[0.13,0.12,0.11,0.10,0.107,0.066,0.09,0.066,0.066,0.065,0.06];
C2=‘KLNT’;
probC2=[0.2575,0.2525,0.2475,0.2425];
V='AIUE';
probV=[0.275,0.265,0.245,0.24];
概率C2=0.16;
对于i=1:nWords
字=[];
nSyl=randi([2 4]);
对于j=1:nSyl
syl=strcat(随机样本(C,1,真,概率C),随机样本(V,1,真,概率V));
如果rand

注意:我不明白为什么在[1100]中生成一个随机整数,取mod并与5进行比较。[1100]中有16个数字的mod为5,因此比率为0.16。

以下代码为您的问题生成100个可接受的单词

clc, clear
nWords = 100;

wList = {};

C = 'KGBNSLMTVx_'; 
probC = [0.13, 0.12, 0.11, 0.10, 0.107, 0.066, 0.09, 0.066,0.066, 0.065, 0.06];

C2 = 'KLNT'; 
probC2 = [0.2575, 0.2525, 0.2475, 0.2425];

V = 'AIUE'; 
probV = [0.275,0.265,0.245,0.24];

probAddC2 = 0.16;

for i=1:nWords
    word = [];
    nSyl = randi([2 4]);
    for j = 1:nSyl
        syl = strcat(randsample(C,1,true,probC), randsample(V,1,true,probV));
        if rand < probAddC2
           syl = strcat(syl, randsample(C2,1,true,probC2));     
        end
        word = strcat(word, syl);
    end
    wList{end+1} = word;
end
wList'
clc,清除
nWords=100;
wList={};
C='KGBNSLMTVx_3;';
概率=[0.13,0.12,0.11,0.10,0.107,0.066,0.09,0.066,0.066,0.065,0.06];
C2=‘KLNT’;
probC2=[0.2575,0.2525,0.2475,0.2425];
V='AIUE';
probV=[0.275,0.265,0.245,0.24];
概率C2=0.16;
对于i=1:nWords
字=[];
nSyl=randi([2 4]);
对于j=1:nSyl
syl=strcat(随机样本(C,1,真,概率C),随机样本(V,1,真,概率V));
如果rand

注意:我不明白为什么在[1100]中生成一个随机整数,取mod并与5进行比较。[1100]中有16个数字的mod是5,所以比率是0.16。

你能举一些“可接受”的词来说明吗?比如;'“KITLANSU”、“SABEVABA”、“SILU”、“TULKATESI”、“GESA”、“MUNAxAT”、“KI_ATVA”、“TIGAGE”是可以接受的。@InspectorBumstead:您可能对使用马尔可夫链等概率模型感兴趣。下面是我之前写的一个生成随机单词的例子:你能给出一些“可接受”单词的例子来说明吗“KITLANSU”、“SABEVABA”、“SILU”、“TULKATESI”、“GESA”、“MUNAxAT”、“KI_ATVA”、“TIGAGE”是可以接受的。@InspectorBumstead:您可能对使用马尔可夫链等概率模型感兴趣。下面是我之前写的一个生成随机单词的示例: