St=[-1 5 -1 2 ; -1 6 1 3 ; -1 7 2 4; -1 8 3 -1 ; 1 9 -1 6 ; 2 10 5 7 ; 3 11 6 8 ; 4 12 7 -1; 5 -1 -1 10 ; 6 -1 9 11 ; 7 -1 10 12 ; 8 -1 11 -1];
countlegal=0;
a=2;
X=St(2,:); % pull out the entire row of R to find out other actions
%count the other legal moves apart from a
for i=1:4,
if X(i)==-1 || i==a %dont count if a or illegal move
continue;
else
countlegal=countlegal+1;
Ac(countlegal)=i;
Ac
end
end
if size(Ac,2)==1
a1=Ac
else
a1=datasample(Ac,1);%comment 1: this command does not work , here I want to pick an element randomly from Ac
end
a1
Ac是一个动态赋值的行向量。我想从Ac中选择一个元素并将其分配给a1。数据采样命令(comment1)不起作用,randperm不起作用,因为它生成从1到n的数字。非常感谢您的帮助。
答案 0 :(得分:1)
为什么不使用randi
?
a1 = Ac(randi(size(Ac,2),1));
randi
返回给定最大值的随机整数。在您的情况下,您希望这是Ac
的长度,并且您想从那里选择一个随机元素。 randi(size(Ac,2), 1)
将返回一个介于1和Ac
长度之间的随机元素。我们使用它来索引Ac
来挑选一个随机元素。