【问题标题】:Using the if statement and for loop to write a program that generates N random numbers (and more)使用 if 语句和 for 循环编写生成 N 个随机数(以及更多)的程序
【发布时间】:2013-05-12 23:01:41
【问题描述】:

问题:

写一个matlab程序

i) 在区间[a,b]中生成NN,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

我说的很对吗?

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

【问题讨论】:

    标签: matlab random modulo


    【解决方案1】:

    获取[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));
    

    【讨论】:

    • 我想知道我是否使用的是过时版本的 Matlab (R2007b),因为当我在输入中输入值时,它一直说“索引超出矩阵维度”。
    • 这很奇怪。我正在使用 2008b 并且没有收到任何错误,但我认为“输入”在 2007b 中的工作方式没有什么不同。也许您已经定义了一个名为“输入”的函数或矩阵?
    • 当我运行这个程序时,它说“索引超出矩阵维度”......为什么?
    • 你能准确地发布整个错误吗?你确定你没有定义任何名为“input”的函数/变量(例如“input = 5;”)吗?我不明白为什么输入时会出现这种类型的错误。
    猜你喜欢
    • 2019-01-04
    • 1970-01-01
    • 2021-09-20
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-23
    相关资源
    最近更新 更多