0

ランダムな値の出力を使用して、Matrix1と呼ばれる新しいマトリックスに入力される列を選択しようとしています。

私は次のようなものを持っています:

a = [1 2 3 4; 5 3 6 2; 9 8 1 4];
n = length(a(1,:))-1;
RandomValue = round(rand()*n+1);
Matrix1 = [];
L=3;
for i=n:-1:1
    RandomValue
    if RandomValue < L
        Matrix1 = [a(:,i) Matrix1];
        a(:, i) = [];
        Matrix1
    end
end

たとえば、ランダムな値が2の場合、[2; 3; 8]をMatrix1に配置します(最初の行の値に基づく)。どうすればコードを変更できますか?それで、私の代わりにそのランダム値番号ですか?

4

1 に答える 1

0

私はあなたを正確にフォローしていませんが、なぜいくつかの変種が

Matrix1 = [a(:,round(rand()*n+1)) Matrix1]

適切ではありません。a を丸めるよりも、疑似乱数の整数を返す関数randを使用する方がよいでしょう。randi

Matrix1 = [a(:,randi(n)) Matrix1]

しかし、@angainor が提案したように、入力行列の列を並べ替えようとしている場合は、permute関数を見てください。

于 2012-10-10T15:25:33.010 に答える