First time here? Check out the FAQ!

Ask Your Question
1

Generating random normal vectors and matrices

asked 12 years ago

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.

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
4

answered 12 years ago

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.]

Preview: (hide)
link

Comments

Thanks for these suggestions.

stafford gravatar imagestafford ( 12 years ago )

Your Answer

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

Add Answer

Question Tools

Stats

Asked: 12 years ago

Seen: 3,488 times

Last updated: Aug 29 '12