を持っています 4x4
このようないくつかの値を持つ配列:
A =
4 0 0 0
0 2 0 0
0 0 3 0
1 0 0 0
1から4までのランダムな整数でゼロをどのように埋めることができますか?
回答:
回答№1の場合は3B=A+~A.*randi(4,size(A))
サイズAのランダム行列を生成し、Aが値を持つゼロを持つ論理行列(〜A)を乗算し、次にAに加算します。
回答№2の場合は3
単に使用する randi
ランダムな整数を生成するためのマスク、およびゼロの位置のマスク
A = [ 4 0 0 0
0 2 0 0
0 0 3 0
1 0 0 0];
m = A == 0;
A(m) = randi ([1 4], nnz (m), 1);
これ以上の利点は、より典型的な B = A + ~A .* randi (4, size (A))
計算時間を節約することです。 必要な乱数の正確な数を生成し、それらを特定の場所に割り当てます。すべての要素に対して加算と乗算を行うわけではありません。