Ask Your Question

stafford's profile - activity

2015-08-22 19:59:23 -0500 received badge  Famous Question (source)
2014-04-14 03:47:45 -0500 received badge  Notable Question (source)
2013-08-11 17:36:46 -0500 received badge  Popular Question (source)
2012-08-29 05:12:21 -0500 received badge  Student (source)
2012-08-28 18:18:04 -0500 received badge  Scholar (source)
2012-08-28 18:18:04 -0500 marked best answer Generating random normal vectors and matrices

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

2012-08-28 17:53:10 -0500 commented answer Generating random normal vectors and matrices

Thanks for these suggestions.

2012-08-28 17:52:39 -0500 received badge  Supporter (source)
2012-08-28 15:29:21 -0500 asked a question Generating random normal vectors and matrices

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.