a=18;
b=22;
for i=1:10
r1 = randi([18 22],1,1)
name= (b-a).*rand(r1,2) + a
end
现在在所有生成值的结果矩阵中保存所有名称值矩阵 在每个循环行大小不固定但coiumn是2
答案 0 :(得分:0)
预分配最大大小的矩阵并删除末尾的冗余行:
a = 18;
b = 22;
% number of iterations
n = 10;
% maximum number of rows
maxRows = b*n;
% preallocating matrix
nameMat = zeros(maxRows,2);
currentRow = 0;
for i = 1:n
r1 = randi([18 22],1,1);
name = (b-a).*rand(r1,2) + a;
nameRows = size(name,1);
nameMat((1:nameRows) + currentRow,:) = name;
currentRow = currentRow + nameRows;
end
% remove redundant rows
nameMat(currentRow+1:end,:) = [];
答案 1 :(得分:0)
您可以使用一行代码实现它;实际上在循环的每次迭代中 你:
integer
随机数r1
(例如20
)r1
double
随机数,乘以(b-a)
然后添加到a
a
和b
是常量,因此请勿在循环中更改在你的循环结束时,你的行数将是sum
integer
随机数,因此您可以在评估10
和name
时直接生成sum
整数随机数,以创建所需的集name
值:
a=18;
b=22;
n_iter=10;
name=(b-a).*rand(sum(randi([18 22],n_iter,1)),2) + a
希望这有帮助,
Qapla'