*! 1.0.3 18Jun1997 Jeroen Weesie/ICS STB-39 dm49 program define matrand version 5.0 parse "`*'", p(",") local cmd "`1'" if "`2'" == "," { local opts "`3'" } parse "`cmd'", p(" ") if "`3'" == "" { di in re "insufficient arguments" exit 198 } local n "`1'" local m "`2'" local A "`3'" confirm integer number `m' confirm integer number `n' local options "Uniform(str) Normal(str) Const(str) Display Format(str)" parse ", `opts'" * select random number generating expressions if "`normal'" != "" { parse "`normal'", p(" ") confirm number `1' confirm number `2' local rnd "`1' + sqrt(abs(`2'))*invnorm(uniform())" } else if "`const'" != "" { parse "`const'", p(" ") confirm integer number `1' confirm integer number `2' local rnd "int(`1' + (`2'-`1'+1)*uniform())" } else { /* if "`uniform'"!="" */ parse "`uniform' 0 1", p(" ") confirm integer number `1' confirm integer number `2' local rnd "`1' + (`2'-`1')*uniform()" } * di "`random number generating expression: `rnd'" * generate random matrix using random number generator `rnd' matrix `A' = J(`n',`m',0) local i 1 while `i' <= `n' { local j 1 while `j' <= `m' { mat `A'[`i',`j'] = `rnd' local j = `j' + 1 } local i = `i' + 1 } * display if "`display'" != "" { if "`format'" != "" { local fmt "format(`format')" } mat list `A', `fmt' } end