Anecdotal Fortran... :-)

From The art of solving problems with Monte Carlo simulations
Generate uniform deviates until their sum exceeds one. The average number of deviates needed is Euler’s number, e. Proof.

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
1 Like