2015-02-05 8 views

risposta

9

In Julia 0.4 è possibile scrivere bitrand(100):

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

È possibile ottenere questo utilizzando il pacchetto Compat nelle vecchie versioni di Julia, oppure è possibile utilizzare il vecchio nome, randbool (stesso comportamento, nome diverso). La risposta di Simon su rand(Bool,100) funziona ma fornisce uno Array{Bool} invece di uno BitArray - un tipo di dati speciale che memorizza gli array booleani in modo compatto utilizzando solo un bit per booleano.

+1

Questa è la nuova [0.4 API] (http://docs.julialang.org/en/latest/stdlib/numbers/?highlight=bitrand#Base.bitrand). Puoi usarlo su 0.3 con il pacchetto [Compat.jl] (https://github.com/JuliaLang/Compat.jl) - precedentemente chiamato ['randbool'] (http://docs.julialang.org/ it/release-0.3/stdlib/numeri /? evidenziano = randbool # Base.randbool). –

+0

Grazie mille! Ho scritto 'Pkg.update()' e poi 'usando compat.jl', ricevo' Warning: richiedendo "compat" non ha definito un modulo corrispondente' e 'bitrand' non è definito. Se questo non può essere risolto facilmente, aprirò solo un nuovo post, credo. Grazie –

+0

'Pkg.add (" Compat ")' e poi 'usando Compat'. I suffissi '.jl' vengono generalmente omessi quando si lavora con i pacchetti in Julia. –

1

non l'ho benchmark, ma l'opzione più veloce sembra probabile che sia:

a = rand(Bool,100,1) 

... vedere nella parte inferiore della pagina di documentazione Julia su Multi-dimensional Arrays.