COSMOS v7.655  COSMOSv7655
(AirShowerMC)
cmkSeed.f
Go to the documentation of this file.
1 ! make random number seed using timer, hostname, and process number.
2  subroutine cmkseed(dummy, seed)
3  implicit none
4 
5  integer dummy ! input. some integer used to make seed
6  integer seed(2) ! output. two integers seed to be used as
7  ! call rndir(seed)
8 
9 
10 
11 
12  integer leng, i, j, kgetpid, kgettime
13  integer k
14  character*24 hostn
15 
16 
17 
18  seed(1)= kgettime(dummy) + dummy
19  seed(2)= kgetpid(dummy) ! this is really dummy
20 !
21 ! add a max of 4 last char. of hostname after converting to int.
22 !
23  call cgethost(leng, hostn) ! get hostname
24  i = max(1, leng-3)
25 
26  do j = i, leng
27  seed(2) = seed(2) + ichar( hostn(j:j) )
28  seed(1) = seed(1) + ichar( hostn(j:j) )
29  enddo
30 !
31 ! next is from rnd1u: to avoid that the
32 ! first random number is biased to large or
33 ! small number systematically
34 !
35  k = seed(1)/53668
36  seed(1) = 40014*(seed(1) - k*53668) - k*12211
37  if(seed(1) .lt. 0) seed(1)=seed(1)+2147483563
38  k = seed(2)/52774
39  seed(2) = 40692*(seed(2) - k*52774) - k* 3791
40  if(seed(2) .lt. 0) seed(2)= seed(2)+2147483399
41 
42  end
subroutine cmkseed(dummy, seed)
Definition: cmkSeed.f:3
subroutine cgethost(leng, hostn)
Definition: copenf.f:472