创建一个随机True / False数组

时间:2015-02-05 21:57:54

标签: arrays random julia

以下是我目前正在做的事情:

a = trues(100)
for i in 1:length(a)
   a[i] = rand()>0.5 ? true : false
end

是否有更好(更快)的解决方案?

2 个答案:

答案 0 :(得分:9)

在Julia 0.4中,你可以写bitrand(100)

julia> bitrand(100)
100-element BitArray{1}:
  true
  true
 false
 false
  true
     ⋮
  true
 false
  true
  true
  true

您可以使用旧版Julia中的Compat包来获取此内容,也可以使用旧名称randbool(相同的行为,不同的名称)。 Simon对rand(Bool,100)的回答是有效的,但是它给出了Array{Bool}而不是BitArray - 一种特殊的数据类型,它只使用每个布尔值一点来紧凑地存储布尔数组。

答案 1 :(得分:2)

我没有对它进行基准测试,但最快的选择似乎可能是:

a = rand(Bool,100,1)

...请参阅Multi-dimensional Arrays上的Julia文档页面底部。