我的课本中遇到了一个问题。问题是确定加起来20(或更多)所需的随机数的数量。 我在这种情况下使用循环。我不确定下面的代码。
a=rand(1000,1)
count =1
for(a=rand(1000,1))
count = count + 1
sum(a((count),1))
if sum(a(count),1)>20
break
end
end
我想要做的是将该向量中的元素添加到20或更多。
答案 0 :(得分:2)
此选项使用低内存
a = rand(1000,1);
Limit = 20;
Acu = 0;
N = 1;
while Acu < Limit
Acu = Acu + a(N, 1);
N = N +1;
end
disp(N-1);
答案 1 :(得分:1)
MATLAB中一个简单的方法是创建一个足够长的随机列表,其总和远大于你的限制,然后对其运行cumsum
函数以累加求和向量,然后选择基于求和向量中的值的原始随机向量的最低元素。
limit = 20;
randnums = rand(1, limit*10); % Create a sufficiently long vector of random numbers
sumnums = cumsum(randnums); % Compute the cumulative sum of the random vector
limitedrandnums = randnums(sumnums<=limit); % Select the values from the random vector based on the sum
disp(limitedrandnums);
disp(sum(limitedrandnums));