/ 行列のゼロ要素をランダムな整数で置き換える - 配列、matlab、random

ランダムな整数 - 行列、matlab、ランダムの行列のゼロ要素を代入する

を持っています 4x4 このようないくつかの値を持つ配列:

A =

4     0     0     0
0     2     0     0
0     0     3     0
1     0     0     0

1から4までのランダムな整数でゼロをどのように埋めることができますか?

回答:

回答№1の場合は3
B=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))計算時間を節約することです。 必要な乱数の正確な数を生成し、それらを特定の場所に割り当てます。すべての要素に対して加算と乗算を行うわけではありません。