Ask Your Question

Generating random normal vectors and matrices

asked 2012-08-28 22:29:21 +0200

stafford gravatar image

I'm new to sage, and am looking for the best ways to generate matrices and vectors with the following properties:

  • Matrices with independent normal entries. The default distribution of entries in matrices generated by random_matrix seems to be uniform over [-1,1]. Can that be changed?

  • Random (normal) vectors with fixed sparsity, in the sense that only a given number of the entries are non-zero.

Thanks for any assistance.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2012-08-29 00:20:40 +0200

DSM gravatar image

From within Sage, I'd probably do something like

sage: m = Matrix(RR, 3, lambda i,j: normalvariate(0, 1))
sage: m
[ -2.62449138547238  0.892440016295533  0.370843911194638]
[-0.556296861517236  0.298136996038704  0.244309907008598]
[ -1.48878357104797  0.424470381797098  -1.02406746759107]

for the first. (See also numpy.random.normal, although you'd have to feed it into a Matrix to get the full Sage functionality anyway.)

For the second, the best way would depend upon whether you want to specify an exact number of non-zero terms or only an approximate fraction. If exact, then maybe just use sample to decide which terms you want to be nonzero and use the dict constructor:

sage: sample(xrange(10), 3)
[8, 1, 6]
sage: {index: normalvariate(0, 1) for index in sample(xrange(10), 3)}
{0: 0.6312570531236461, 1: -0.3442153313732221, 7: 0.12271841036659839}
sage: vector(RR, 10, {index: normalvariate(0, 1) for index in sample(xrange(10), 3)})
(0.000000000000000, 0.000000000000000, 0.000000000000000, -2.16336854587694, -0.123030170562214, 0.000000000000000, 0.000000000000000, -1.99437183544239, 0.000000000000000, 0.000000000000000)

[Note that since I'm computing new random numbers each time, the three lines above aren't consistent with each other. But you should get the idea.]

edit flag offensive delete link more


Thanks for these suggestions.

stafford gravatar imagestafford ( 2012-08-29 00:53:10 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools


Asked: 2012-08-28 22:29:21 +0200

Seen: 3,327 times

Last updated: Aug 29 '12