Returns the probability to draw tgt from this sampler (has to be a set, i.e. unique and ordered) the probability of drawing anything from an empty sampler is 0
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(AliasSampler_t), | intent(in) | :: | this | |||
| integer, | intent(in) | :: | contain(:) | |||
| real(kind=dp), | intent(in) | :: | renorm | |||
| integer, | intent(in) | :: | tgt |
the number for which we request the probability of sampling |
This loosened threshhold might be a good idea if the renormalization was calculated via the complement, i.e. \Sum{ p_i } {i \in D_i} = 1 - \Sum{ p_i } {i \notin D_i}
the probability of picking tgt from constraint
pure function constrained_getProb(this, contain, renorm, tgt) result(prob) class(AliasSampler_t), intent(in) :: this integer, intent(in) :: contain(:) real(dp), intent(in) :: renorm integer, intent(in) :: tgt character(*), parameter :: this_routine = 'constrained_getProb' real(dp) :: prob ASSERT(is_set(contain)) ASSERT(tgt .in. contain) ASSERT(1 <= contain(1) .and. contain(size(contain)) <= size(this%probs%ptr)) ASSERT(isclose(renorm, sum(this%get_prob(contain)), atol=1e-10_dp)) !! This loosened threshhold might be a good idea if the renormalization !! was calculated via the complement, i.e. !! \Sum{ p_i } {i \in D_i} = 1 - \Sum{ p_i } {i \notin D_i} if (near_zero(renorm)) then !! the probability of drawing anything from an empty sampler is 0 prob = 0.0 else prob = this%probs%ptr(tgt) / renorm end if end function constrained_getProb