| Mathematica | Matlab |
SeedRandom[1];
Table[RandomVariate[UniformDistribution[{0,1}]],{5}]
Out[66]= {0.817389,0.11142,0.789526,0.187803,0.241361}
|
rand(5,1) ans = 0.814723686393179 0.905791937075619 0.126986816293506 0.913375856139019 0.632359246225410 |
| Fortran
program t3 implicit none real :: x(5) CALL RANDOM_SEED() CALL random_number(x) print *,x end programcompile and run $ gfortran -std=f95 -Wextra -Wall -pedantic -funroll-loops -ftree-vectorize -march=native -Wsurprising -Wconversion t3.f90 /usr/lib/liblapack.a /usr/lib/libblas.a $ ./a.exe 0.99755955 0.56682467 0.96591532 0.74792767 0.36739087 |
Generate uniform numbers from a to b, say a=-2 and b=5
| Mathematica | Matlab |
SeedRandom[1];
Table[RandomVariate[UniformDistribution[{-2,5}]],{5}]
Out[70]= {3.72173,-1.22006,3.52668,-0.685378,-0.310473}
|
-2 + (5+2)*rand(5,1) ans = -1.317217165004133 -0.050512467930661 1.828170634434887 4.702547848040084 4.754219746394936 |
| Fortran
program t3_2
implicit none
integer ::i
real, parameter :: a=-1.0,b=1.0
real :: x(5)
CALL RANDOM_SEED()
DO i=1,2
CALL random_number(x)
x = a+(b-a)*x
print *,x
END DO
end program
compile and run
$ gfortran -std=f95 -Wextra -Wall -pedantic -funroll-loops -ftree-vectorize -march=native -Wsurprising -Wconversion t3_2.f90 /usr/lib/liblapack.a /usr/lib/libblas.a $ ./a.exe 0.99511909 0.13364935 0.93183064 0.49585533 -0.26521826 -3.87262106E-02 -0.85249150 -0.98928964 -0.30583751 -0.31551242 $ |
Let
and
, matrix of size
by
| Mathematica | Matlab |
SeedRandom[1];
Table[RandomVariate[UniformDistribution[{-2,5}]],{5},{5}]
Out[72]= {{3.72173,-1.22006,3.52668,-0.685378,-0.310473},
{-1.53983,1.79573,-0.381918,0.772043,2.90332},
{-0.517218,3.2406,0.959955,-0.267537,4.8402},
{3.77614,4.47693,2.04639,0.0500882,-0.543643},
{2.06332,-1.09825,0.144992,2.98408,0.734073}}
|
-2 + (5+2)*rand(5,5)
ans =
3.7642 1.0712 1.4284 -0.0678 1.4885
2.8638 0.6709 1.1191 2.7579 4.7182
0.2197 3.3586 2.5242 2.5857 0.3827
4.6516 3.5664 2.9656 -0.8617 2.0969
-1.7589 -0.6919 3.2828 -1.1670 -0.4333
|
| Fortran
program t3_3
implicit none
integer ::i
real, parameter :: a=-1.0,b=1.0
real :: x(5,5)
CALL RANDOM_SEED()
DO i=1,2
CALL random_number(x)
x = a+(b-a)*x
CALL write(x)
END DO
!--- internal functions below ------
contains
SUBROUTINE write(A)
implicit none
REAL, DIMENSION(:,:) :: A
integer :: i,j
WRITE(*,*)
DO i = lbound(A,1), ubound(A,1)
WRITE(*,*) (A(i,j), j = lbound(A,2), ubound(A,2))
END DO
END SUBROUTINE write
end program
compile and run
$ gfortran -std=f95 -Wextra -Wall -pedantic -funroll-loops
-ftree-vectorize -march=native -Wsurprising -Wconversion
t3_3.f90 /usr/lib/liblapack.a /usr/lib/libblas.a
$ ./a.exe
0.99511909 -3.87262106E-02 -0.56409657 0.32386434 0.71138477
0.13364935 -0.85249150 -0.73367929 -0.96778345 -0.19742620
0.93183064 -0.98928964 0.80104899 0.30170965 -0.58625138
0.49585533 -0.30583751 -0.22646809 0.29281759 0.93707883
-0.26521826 -0.31551242 -0.10903549 -0.35402548 0.19679904
0.34596145 0.21138644 0.22462976 0.31809497 0.45771694
-8.62354040E-02 0.43809581 0.95732045 0.10801017 -0.19508958
-0.33996975 0.79466915 0.99828446 0.95552015 0.85725522
-0.79923415 0.31645823 -0.48640406 0.80384660 -0.70432973
0.51090658 -0.69856644 0.10173070 0.31584930 0.34905851
|
me 2013-01-09