Hi Ahmed,

Hello,
> l have a matrix as follow :
>  k=rand(1:100,3,3)
> 3x3 Array{Int64,2}:
>  97  26  77
>  58  64  86
>  87  85  99
>
>
> l want to shuffle randomly the order by lines for instance line 1 becomes 
> 3. l have a matrix of 10000 by 700 .
>

 The following function is based on the definition of shuffle! in Julia 0.4 
(it's different in Julia 0.5)

function shufflerows!{T<:Real}(a::AbstractArray{T})
    for i = size(a, 1):-1:2
        j = rand(1:i)
        a[i,:], a[j,:] = a[j,:], a[i,:]
    end
    return a
end

Here is it in action:

julia> a = rand(1:100, 5, 3)
5x3 Array{Int64,2}:
 18  90  34
  9  24  61
 49  73  84
 70  85  20
 66  59  37

julia> shufflerows!(a)
5x3 Array{Int64,2}:
  9  24  61
 18  90  34
 70  85  20
 49  73  84
 66  59  37

Note that the matrix is changed in-place.

Cheers,
Mosè

Reply via email to