SPRANDN Sparse Normal Random Matrix

Section: Sparse Matrix Support


Creates a sparse matrix with normally distributed random entries (mean 0, sigma 1). The syntax for its use is
  y = sprandn(x)

where x is a sparse matrix, where y is a sparse matrix that has random entries where x is nonzero. The second form specifies the size of the matrix and the density

  y = sprandn(m,n,density)

where m is the number of rows in the output, n is the number of columns in the output, and density (which is between 0 and 1) is the density of nonzeros in the resulting matrix. Note that for very high densities the actual density of the output matrix may differ from the density you specify. This difference is a result of the way the random entries into the matrix are generated. If you need a very dense random matrix, it is better to generate a full matrix and zero out the entries you do not need.


Here we seed sprandn with a full matrix (to demonstrate how the structure of the output is determined by the input matrix when using the first form).
--> x = [1,0,0;0,0,1;1,0,0]

x = 
 1 0 0 
 0 0 1 
 1 0 0 

--> y = sprandn(x)

y = 
 1 1 0.770419
 3 1 0.332694
 2 3 -0.589851
--> full(y)

ans = 
    0.7704         0         0 
         0         0   -0.5899 
    0.3327         0         0 

The more generic version with a density of 0.001. On many systems the following is impossible using full matrices

--> y = sprandn(10000,10000,.001);
--> nnz(y)/10000^2

ans =