fotran95: "random_seed()" function problem...help!

Hello everone!So i am writing this code where I am producoing random numbers from a generator through a subroutine.Then I call the subroutine and pass them through a Gaussian distribution.I have problem with my seed subroutine: my program compiles but when i try to execute it complain that "Random_seed(): PUT array too small" i have no idea what does this means!Here is my subroutine:
subroutine setSEED (seed)
implicit none
real*8:: x
integer, dimension(2), intent(inout):: seed
if (seed(1) == 0.0) &
seed = floor(1000*secnds(0.0)) +(/0, 37 /) <--- this line is where it
complains call random_seed(put=seed) <---...and here

end subroutine setSEED

and my gaussian distribution function :
Real*8 Function gasdev(idum)
implicit none
integer, intent(inout) :: idum
integer, save::iset
real*8:: fac,rsq,v1,v2
real*8, dimension(2) :: x
real*8, save :: gset
if (idum.lt.0) iset=0
if (iset.eq.0) then
rsq = 0.0
do while (rsq > 1.0.or.rsq==0)
call random_number(x)
v1=2.*x(1)-1
v2=2.*x(2)-1
rsq=v1**2+v2**2
end do

fac=sqrt(-2.*log(rsq)/rsq)
gset=v1*fac
gasdev=v2*fac
iset=1
else
gasdev=gset
iset=0
endif

return
end Function gasdev
....AND MY MAIN PROGRAM:
program mainprog
implicit none
real*8::angle,gasdev,number
integer::i
integer, dimension(2) :: seed = 0
call setSEED(seed)

Do i=1,10,1
angle=gasdev(seed)
print*,"angle=gasdev =",angle
write(299,*),angle
end do
end program mainprog
Do you guys think can help me?its so frustrating!!!thank you all!!!
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories