Julia,有条件地替换单个元素

Julia, conditionally substitution of individual elements

我之前问过一个关于这个的问题,但可能使问题过于复杂了。给定一个数组:

a = [3,4,3,6,3];

我需要什么代码来执行以下操作:

如果 a == 3
的单个元素 然后以概率 (p=0.67),将值更改为 9
否则将元素保留为 3

谢谢。 J

我想这将是实现您想要的最短途径:

a[findall(x -> x==3 && rand()<=0.67, a)] .= 9

更长但可能更清晰的循环版本

for i in findall(a .== 3)
    rand() ≤ 0.67 && (a[i] = 9)
end

for i in findall(a .== 3)
    rand() ≤ 0.67 ? (a[i] = 9) : continue
end