Qui è quello che sto facendo attualmente:creare una serie di casuali Vero/Falso
a = trues(100)
for i in 1:length(a)
a[i] = rand()>0.5 ? true : false
end
C'è una soluzione migliore (più veloce)?
Qui è quello che sto facendo attualmente:creare una serie di casuali Vero/Falso
a = trues(100)
for i in 1:length(a)
a[i] = rand()>0.5 ? true : false
end
C'è una soluzione migliore (più veloce)?
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.
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.
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). –
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 –
'Pkg.add (" Compat ")' e poi 'usando Compat'. I suffissi '.jl' vengono generalmente omessi quando si lavora con i pacchetti in Julia. –