使用if语句和for循环编写一个生成N个随机数的程序(以及更多)

时间:2013-05-12 23:01:42

标签: matlab random modulo

问题:

编写一个

的matlab程序

i)在区间[a,b]中生成N <= 20个随机数,其中 N,a,b 通过键盘输入

我的尝试:

a = input ('a=')
b = input ('b=')
N = input ('N=')

 for N = (1:N)
     r = rand([a,b],[1,N])
 end

似乎不起作用。出现以下错误消息

“下标索引必须是正整数或逻辑。”

我做错了什么?

ii)将数字写入矢量/数组 x

不知道怎么做? 这只是放r = x?

的问题

iii)将所有可被 k 整除的数字写入屏幕,通过键盘输入 k

我的尝试:

k = input ('k=')
t = mod(x,k);

 for x = i:N
  if mod(x,k) == 0
  disp t
  end
 end

我是否接近正确?

[我之前从未使用过堆栈溢出 - 无法正确格式化事项]抱歉

1 个答案:

答案 0 :(得分:2)

获取范围[a,b]中的N个随机数:

a = input('a=');
b = input('b=');
N = input('N=');

% For floating point:
r1 = a + (b-a)*rand(1, N);
% For integers:
r2 = round(a + (b-a)*rand(1, N));

如您所见,r1和r2已经是矢量形式,所以:

x = r1;
% or
x = r2;

对于最后一部分(这也将打印重复项):

k = input('k=');
divs_found = find(mod(r, k) == 0);
disp(r(divs_found));