normal Function

private function normal(mean, std_dev)

Normal (Gaussian) random number with specified mean and standard deviation. Uses the Box-Muller transform.

Arguments

Type IntentOptional Attributes Name
real(kind=wp), intent(in) :: mean

mean of the distribution

real(kind=wp), intent(in) :: std_dev

standard deviation

Return Value real(kind=wp)


Calls

proc~~normal~~CallsGraph proc~normal normal proc~uniform_random_number uniform_random_number proc~normal->proc~uniform_random_number

Called by

proc~~normal~~CalledByGraph proc~normal normal proc~truncated_normal truncated_normal proc~truncated_normal->proc~normal proc~perturb_variable simulated_annealing_type%perturb_variable proc~perturb_variable->proc~truncated_normal proc~perturb_and_evaluate simulated_annealing_type%perturb_and_evaluate proc~perturb_and_evaluate->proc~perturb_variable proc~sa simulated_annealing_type%sa proc~sa->proc~perturb_and_evaluate proc~solve_simulated_annealing solve_simulated_annealing proc~solve_simulated_annealing->proc~sa

Source Code

   function normal(mean, std_dev)

      real(wp),intent(in) :: mean    !! mean of the distribution
      real(wp),intent(in) :: std_dev !! standard deviation
      real(wp) :: normal

      real(wp) :: u1, u2

      u1 = max( uniform_random_number(), tiny(1.0_wp) )
      u2 = uniform_random_number()

      normal = mean + std_dev * sqrt(-2.0_wp * log(u1)) * cos(twopi * u2)

   end function normal