Absolutely amazing: this reduced runtime by over 80%. Thank you!
On Thursday, July 23, 2015 at 12:03:14 PM UTC-7, Tom Breloff wrote:
>
> How about this:
>
>
> julia> cs = collect(2:N); i = 1;
>
> julia> N=5; k=2; I = Array(Int, N*k); J = Array(Int, N*k); V = fill(true,
> N*k);
>
> julia> for r in 1:N
> rng = (r-1)*k+1 : r*k
> I[rng] = r
> J[rng] = sample(cs, k; replace=false)
> if r<N
> cs[r] -= 1
> end
> end
>
> julia> spmat = sparse(I, J, V, N, N)
> 5x5 sparse matrix with 10 Bool entries:
> [2, 1] = true
> [3, 1] = true
> [5, 1] = true
> [1, 2] = true
> [4, 2] = true
> [5, 2] = true
> [2, 3] = true
> [4, 3] = true
> [3, 4] = true
> [1, 5] = true
>
> julia> full(spmat)
> 5x5 Array{Bool,2}:
> false true false false true
> true false true false false
> true false false true false
> false true true false false
> true true false false false
>
>
>
>
> On Thursday, July 23, 2015 at 2:29:36 PM UTC-4, Seth wrote:
>>
>> Hi all,
>>
>> I'm looking for really clever (FAST) ways of creating an NxN sparse
>> random boolean matrix that has the following properties:
>>
>> * exactly k (k <= N) true values per row, and
>> * no true values on the diagonal (mx[i,i]).
>>
>> Anyone have an ingenious way of creating something like this?
>>
>