我怎么能算出一些?

0 matlab

问题是:在26名学生中,给出了10个问题的测试.学生们扔硬币来回答这个问题.我必须找出有多少学生有两个或更少的答案是正确的.这是我写的程序,但我不确定它...它好吗?

correct=0;
students=0;
for i=1:26
    for j=1:10
        answ=ceil(rand);
        if answ==1
            correct=correct+1;
            if correct==2
                students=students+1;
            end
        end
    end
end
disp(students)
Run Code Online (Sandbox Code Playgroud)

Lui*_*ndo 5

如果你进行矢量化,它更整洁,运行更快,更具可读性:

answers = round(rand(10,26)); % 10x26 matrix of 0 / 1 values
correct = sum(answers); % sum along each column
students = sum(correct<=2) % how many values of correct are 2 or less
Run Code Online (Sandbox Code Playgroud)

顺便说一下,从您的代码中看,您想知道有多少学生有2个或更多正确答案(不是2或更少).在这种情况下,将最后一行更改为

students = sum(correct>=2) % how many values of correct are 2 or more
Run Code Online (Sandbox Code Playgroud)