Это зависит от ваших точных намерений.
rand(10)
создает матрицу 10x10
со случайным числом, равномерно распределенным между 0
и 1
.Таким образом, p_i
- это матрица 10x10
, и когда вы выполняете сравнение p_i<=1
, вы получаете другую матрицу с логическими значениями, которые вы можете суммировать.
x = 2*rand(10)-1;
y = 2*rand(10)-1;
p_i = sqrt(x.^2 + y.^2);
n = sum(sum(p_i<=1))
n = sum(p_i(:)<=1) % from @XiangruiLi
n = sum(p_i<=1,'all') % from @CrisLuengo, requires MATLAB 2018b
В качестве альтернативы вы можете написать с векторомвместо матрицы;
samples = 100;
x = 2*rand(samples,1)-1;
y = 2*rand(samples,1)-1;
p_i = sqrt(x.^2 + y.^2);
n = sum(p_i<=1)
Второй вопрос
Цикл for
не работает, так как вам нужно будет указать, на какой индекс смотреть:
for k = 1:100
if p_i(k) <= 1
n = n + 1
end
end
Чтобы утверждение p_i <= 1
было истинным, каждое из значений матрицы должно удовлетворять условию.