# Anecdotal Fortran... :-)

**URL:** <https://fortran-lang.discourse.group/t/anecdotal-fortran/704>\
**Category:** Uncategorized\
**Created:** [February 11, 2021, 5:58pm UTC](https://fortran-lang.discourse.group/t/anecdotal-fortran/704 "2021-02-11T17:58:03Z")\
**Posts on this page:** 1\
**Showing post:** 82

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [May 3, 2021, 12:31pm UTC](https://fortran-lang.discourse.group/t/anecdotal-fortran/704/82 "2021-05-03T12:31:11Z")

</div>

From [The art of solving problems with Monte Carlo simulations](https://ggcarvalho.dev/posts/montecarlo/)  
Generate uniform deviates until their sum exceeds one. The average number of deviates needed is Euler’s number, e. [Proof](https://www.nsgrantham.com/sum-over-one).

```
program main
! simulate Euler's number, e
implicit none
integer, parameter :: nsim = 10000000, niter = 10
integer :: i,iter,j,nsum(nsim)
real :: xsum,xran
call random_seed()
do iter=1,niter
   do i=1,nsim
      xsum = 0.0
      j = 0
      do
         j = j + 1
         call random_number(xran)
         xsum = xsum + xran
         if (xsum > 1.0) exit
      end do
      nsum(i) = j
   end do
   print*,sum(nsum)/real(nsim)
end do
print*,exp(1.0)," true"
end program main

```

output:

```
   2.71822739    
   2.71828914    
   2.71854210    
   2.71806741    
   2.71793246    
   2.71829391    
   2.71816230    
   2.71832871    
   2.71852446    
   2.71853471    
   2.71828175 true
```

---

_[View the full topic](https://fortran-lang.discourse.group/t/anecdotal-fortran/704)._
