0

问题:

编写一个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

我在哪里接近正确?

[我以前从未使用过堆栈溢出-无法正确格式化内容]对不起

4

1 回答 1

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));
于 2013-05-12T23:17:01.767 回答