Taiseer

02-09-2011, 10:51 AM

Hi,

how to generate a 2dimensional matrix (n,m) that all it elements are random numbers between -1 and 1.

Thanks

davekw7x

02-10-2011, 08:21 AM

...generate a 2dimensional matrix (n,m)Declare a 2-Dimensional array of reals.

that all it elements

Make nested loops like this:

do i=1,m

do j=1,n

! Get a value to store into x(i, j)

val = "something"

! Store the value

x(i,j) = val

enddo

enddo

...random numbers between -1 and 1...

Do you mean to get deviates from some PRNG (Pseudo Random Number Generator) that represent samples from a population that is uniformly distributed on the interval -1 to 1?

Well, typical PRNGs, like Numerical Recipes ran2 yield samples that are (approximately) uniformly distributed on the interval 0 to 1, so you simply have to map the interval [0,1] to [-1,1], and the distribution of the results will be uniformly distributed over the new interval, right?

In general, you can map the interval [0,1] to the interval [a,b] by the following:

Suppose u is a random variable uniformly distributed on the interval [0, 1] and you want a random variable v to be uniformly distributed on [a, b]

Then

v = a + (b-a) * u

So the loop stuff can look like

do i=1,m

do j=1,n

call ran2(val)

x(i,j) = 2.0*val - 1.0

enddo

enddo

Now if this is not what you had in mind, how about giving us a complete and precise program specification?

Regards,

Dave