Subsections

# 59 Generate uniform distributed random numbers

## 59.1 How to generate 5 uniform distributed random numbers from 0 to 1?

 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 program ``` compile 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 ```

## 59.2 How to generate 5 random numbers from a to b?

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 \$ ```

## 59.3 How to generate MATRIX of random numbers from a to b?

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