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 に答える