function get_random_nums,nx,ny,min ;---------------------------------------------------------------------------- ; Routine get a sequence of random numbers that has an average value < min. ; This routine exists because IDL will give a sequence that can ; have a mean that is biased high or low, which is hard on things like a ; Monte Carlo simulation. ; ; The output random numbers can be a vector or a matrix. ; ; Input: ; nx......# of random #'s for a vector (or in the x-axis), rnum = fltarr(nx) ; ny......# of random #'s in the y-axix (ny = 0 for a vector), rnum = fltarr(nx,ny) ; min.....min value for the mean of the random number vector or matrix (0.01 is good) ; ; Output: ; rnum....a vector or matrix of random numbers ; ; Source: Mark Hervig ;---------------------------------------------------------------------------- rnum = 0. av = 1e3 ;- get a vector if (ny le 0) then begin while (av gt min) do begin rnum = randomn(seed,nx) av = abs(mean(rnum)) endwhile endif ;- get a matrix if (ny gt 0) then begin while (av gt min) do begin rnum = randomn(seed,nx,ny) av = abs(mean(rnum)) endwhile endif ;- done return,rnum end