Class MarsagliaTsangWangDiscreteSampler.Binomial

java.lang.Object
org.apache.commons.rng.sampling.distribution.MarsagliaTsangWangDiscreteSampler.Binomial
Enclosing class:
MarsagliaTsangWangDiscreteSampler

public static final class MarsagliaTsangWangDiscreteSampler.Binomial extends Object
Create a sampler for the Binomial distribution.
Since:
1.3
  • Method Details

    • of

      public static SharedStateDiscreteSampler of(UniformRandomProvider rng, int trials, double probabilityOfSuccess)
      Creates a sampler for the Binomial distribution.

      Any probability less than 2-31 will not be observed in samples.

      Storage requirements depend on the tabulated probability values. Example storage requirements are listed below (in kB).

               p
      trials   0.5    0.1   0.01  0.001
         4    0.06   0.63   0.44   0.44
        16    0.69   1.14   0.76   0.44
        64    4.73   2.40   1.14   0.51
       256    8.63   5.17   1.89   0.82
      1024   31.12   9.45   3.34   0.89
      

      The method requires that the Binomial distribution probability at x=0 can be computed. This will fail when (1 - p)^trials == 0 which requires trials to be large and/or p to be small. In this case an exception is raised.

      Parameters:
      rng - Generator of uniformly distributed random numbers.
      trials - Number of trials.
      probabilityOfSuccess - Probability of success (p).
      Returns:
      Sampler.
      Throws:
      IllegalArgumentException - if trials < 0 or trials >= 2^16, p is not in the range [0-1], or the probability distribution cannot be computed.