Mercurial > octave-nkf
diff scripts/sparse/sprandn.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/sprandn.m Thu Apr 05 17:30:31 2007 +0000 +++ b/scripts/sparse/sprandn.m Thu Apr 05 17:59:47 2007 +0000 @@ -21,27 +21,28 @@ ## This program is public domain ## Author: Paul Kienzle <pkienzle@users.sf.net> -function S = sprandn(m,n,d) - if nargin == 1 - [i,j,v,nr,nc] = spfind(m); - S = sparse(i,j,randn(size(v)),nr,nc); - elseif nargin == 3 +function S = sprandn (m, n, d) + if (nargin == 1) + [i, j, v, nr, nc] = spfind (m); + S = sparse (i, j, randn (size (v)), nr, nc); + elseif (nargin == 3) mn = m*n; - 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 - k = min(length(idx),k); # actual number of entries in S - j = floor((idx(1:k)-1)/m); + 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,randn(k,1),m,n); + S = sparse (i, j+1, randn (k, 1), m, n); endif else print_usage ();