Заполнение массива с помощью цикла FOR и функции - PullRequest
1 голос
/ 07 мая 2019

Я ожидал, что следующий код заполнит E случайными 1 и 0, но этого не происходит.Я не могу понять, почему.

Pkg.add("StatsBase")
using StatsBase

function randomSample(items,weights)
    sample(items, Weights(weights))
end



n = 10
periods = 100

p = [ones(n,periods)*0.5]
E = fill(NaN, (n,periods))

for i in 1:periods
    for ii in 1:n
        E(ii,i) = randomSample([1 0],[(p(ii,i)), 1 - p(ii,i)])
    end
end
E

1 Ответ

2 голосов
/ 07 мая 2019

Оператор:

E(ii,i) = randomSample([1 0],[(p(ii,i)), 1 - p(ii,i)])

определяет локальную функцию E и не является операцией присваивания матрице E.Используйте

E[ii,i] = randomSample([1, 0],[p[ii,i], 1 - p[ii,i]])

(я исправил дополнительные ошибки в вашем коде, поэтому, пожалуйста, проверьте различия)

и для его запуска вы также должны написать:

p = ones(n,periods)*0.5
...