Mercurial > hg > octave-lyh
diff scripts/sparse/sprand.m @ 6498:2c85044aa63f
[project @ 2007-04-05 17:59:47 by jwe]
author | jwe |
---|---|
date | Thu, 05 Apr 2007 17:59:47 +0000 |
parents | 34f96dd5441b |
children | 93c65f2a5668 |
line wrap: on
line diff
--- a/scripts/sparse/sprand.m +++ b/scripts/sparse/sprand.m @@ -30,26 +30,28 @@ ## 2004-10-20 Texinfo help and copyright message function S = sprand (m, n, d) - if nargin == 1 - [i,j,v,nr,nc] = spfind(m); - S = sparse (i,j,rand(size(v)),nr,nc); - elseif nargin == 3 + if (nargin == 1) + [i, j, v, nr, nc] = spfind (m); + S = sparse (i, j, rand (size (v)), nr, nc); + elseif (nargin == 3) mn = n*m; - k = round(d*mn); # how many entries in S would be satisfactory? - idx=unique(fix(rand(min(k*1.01,k+10),1)*mn))+1; - # idx contains random numbers in [1,mn] - # generate 1% or 10 more random values than necessary - # in order to reduce the probability that there are less than k - # distinct values; - # maybe a better strategy could be used - # but I don't think it's worth the price - k = min(length(idx),k); # actual number of entries in S - j = floor((idx(1:k)-1)/m); + ## how many entries in S would be satisfactory? + k = round (d*mn); + idx = unique (fix (rand (min (k*1.01, k+10), 1) * mn)) + 1; + ## idx contains random numbers in [1,mn] + ## generate 1% or 10 more random values than necessary in order to + ## reduce the probability that there are less than k distinct + ## values; maybe a better strategy could be used but I don't think + ## it's worth the price + + ## actual number of entries in S + k = min (length (idx), k); + j = floor ((idx(1:k)-1)/m); i = idx(1:k) - j*m; - if isempty(i) - S = sparse(m,n); + if (isempty (i)) + S = sparse (m, n); else - S = sparse(i,j+1,rand(k,1),m,n); + S = sparse (i, j+1, rand (k, 1), m, n); endif else print_usage ();