Howdy, Stranger!

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

Categories

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

ApollionApollion Member Posts: 4
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.