Create a array of random True/False

2019-05-03 09:54发布

Here is what I am currently doing:

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

Is there a better (faster) solution?

2条回答
SAY GOODBYE
2楼-- · 2019-05-03 10:33

In Julia 0.4 you can write bitrand(100):

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

You can get this using the Compat package in older versions of Julia, or you can use the old name, randbool (same behavior, different name). Simon's answer of rand(Bool,100) works but it gives an Array{Bool} instead of a BitArray – a special data type that stores boolean arrays compactly using only a bit per boolean.

查看更多
Explosion°爆炸
3楼-- · 2019-05-03 10:38

I haven't benchmarked it but the fastest option seems likely to be:

a = rand(Bool,100,1)

... see the bottom of the Julia documentation page on Multi-dimensional Arrays.

查看更多
登录 后发表回答