      program sp850        ! 観測時間が同じになるように
      implicit none        ! 指数乱数を使ったシミュレーション
      integer i, j, k
      
      real*8 lambda                ! 平均自由行程(飛来平均時間差)
      integer Ns_simu              ! サンプリング数
      real*8 ds12_simu             ! 時間差
      real*8  sum_simu, ave_simu   ! 時間差の積算値, 時間差の平均値
      data    sum_simu/ 0d0 /

      real*8 r                     ! 一様乱数
      integer iy
      data iy/7654321/

      real*8 x, y                  ! グラフ描画のための出力変数

      real*8 detection_Time        ! 観測時間(sec)

      integer NNmax, NNmax1
      parameter( NNmax=100, NNmax1=NNmax+1 )
      real*8 NSmin, NSmax, dNS, boxNS(NNmax1)
      parameter( NSmin=19000, NSmax=21000 )
      integer cntNS( NNmax )
      data    cntNS /NNmax*0/
      integer N_detect
      parameter( N_detect=100 )

      dNS     = ( NSmax - NSmin ) / NNmax
      boxNS(1)= NSmin
      do j=1,NNmax
        boxNS(j+1) = boxNS(j) + dNS
      enddo

      open(1, file='sp810_lambda.dat')          ! <-- lambda
      read(1,*) lambda
      close(1)

      open(1, file='sp810_detection_Time.dat')  ! <-- detection_Time
      read(1,*) detection_Time
      close(1)
!     write(*,*) detection_Time

!     指数乱数によるシミュレーション
!     simulationする観測時間 sum_simu が detection_Timeになるまで

      do k=1, N_detect

             i = 0
      sum_simu = 0
      do while ( sum_simu .le. detection_Time )
        i = i + 1
        call ransu(iy,r)                ! 一様乱数
        ds12_simu = - lambda * log(r)   ! 指数乱数 --> 飛来時間差
        sum_simu = sum_simu + ds12_simu ! 観測経過時間(sec)
      enddo

      Ns_simu = i
!     write(*,'(/a9,i10)')'N_sampl =', Ns_simu

      do j=1,NNmax                      ! event数の度数分布
          if( boxNS(j).le.Ns_simu .and. Ns_simu.lt.boxNS(j+1) ) then
              cntNS(j) = cntNS(j) + 1
             go to 3000
          endif
      enddo
 3000 continue

      enddo
      
      open(6,file='sp850.dat')          ! 飛来数の分布
      do j=1,NNmax
        x = boxNS(j) + dNS/2d0
        y = float(cntNS(j))/dNS/N_detect
        write(6,*) x, y
      enddo
      close(6)

      stop
      end