subroutine gen_random_seed() integer :: s, di, clock integer, dimension(:), allocatable :: seed call random_seed(size = di) allocate(seed(di)) call system_clock(count=clock) seed = clock + 37 * (/ (s - 1, s = 1, di) /) call random_seed(put=seed) deallocate(seed) end subroutine gen_random_seed !Questo è un procedimento per generare numeri casuali tra 0 e 1 che non si ripetano !viene utilizzato il valore del clock del computer per renderli realmente casuali. !Le subroutine usate qui sono già presenti di default in fortran. program eszero real,dimension(:),allocatable :: x,cont,ec real,dimension(2) :: e integer :: ni,c,n,d real::a print*, "Inserire il numero di valori desiderati:" read*, n print*, "Inserire gli estremi dell'istogramma:" read*, e print*, "Inserire il numero di intervalli:" read*, ni !Definizione di n,e,ni allocate(x(n),cont(ni),ec(ni+1)) !Prendo spazio in memoria per gli array cont=0.0 a=(e(2)-e(1))/ni !ampiezza dei bin ec(1)=e(1) call gen_random_seed() call random_number(x) do c=1,n x(c)=e(1)+(e(2)-e(1))*x(c) !adatto all'intervallo di valori desiderato do d=1,ni ec(d+1)=e(1)+a*d if(ec(d)