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è