【发布时间】:2014-05-05 03:29:45
【问题描述】:
我有一个 4x4 数组,其中一些值如下:
A =
4 0 0 0
0 2 0 0
0 0 3 0
1 0 0 0
如何用 1 到 4 的随机整数填充零?
【问题讨论】:
我有一个 4x4 数组,其中一些值如下:
A =
4 0 0 0
0 2 0 0
0 0 3 0
1 0 0 0
如何用 1 到 4 的随机整数填充零?
【问题讨论】:
只需使用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)),是节省一些计算时间。它生成所需随机数的确切数量并将它们分配到特定位置。它不会对所有元素进行加法和乘法。
【讨论】:
B=A+~A.*randi(4,size(A))
生成一个大小为 A 的随机矩阵,乘以一个逻辑矩阵 (~A),该矩阵在 A 有一个值的地方为零,然后加到 A。
【讨论】: