hypergeometric

hypergeometric#

Class is used for generation of hypergeometrically distributed integer types random numbers.

Description

The class object is used in the oneapi::mkl::rng::generate() function to provide random numbers hypergeometrically distributed with lot size l, size of sampling s, and number of marked elements in the lot m, where l,m,sN{0};lmax(s,m).

Consider a lot of l elements comprising m marked and l - m unmarked elements. A trial sampling without replacement of exactly s elements from this lot helps to define the hypergeometric distribution, which is the probability that the group of s elements contains exactly k marked elements.

The probability distribution is given by:

P(X=k)=CmkClmskCls,k{max(0,s+ml),...,min(s,m)}.

The cumulative distribution function is as follows:

Fl,s,m(x)={0,x<max(0,s+ml)k=max(0,s+ml)xCmkClmskCls,max(0,s+ml)xmin(s,m)1,x>min(s,m)

class hypergeometric#

Syntax

namespace oneapi::mkl::rng {
template<typename IntType = std::int32_t, typename Method = hypergeometric_method::by_default>
class hypergeometric {
public:
    using method_type = Method;
    using result_type = IntType;
    hypergeometric();
    explicit hypergeometric(std::int32_t l, std::int32_T s, std::int32_T m);
    std::int32_t s() const;
    std::int32_t m() const;
    std::int32_t l() const;
};
}

Template parameters

typename IntType
Type of the produced values. Supported types:
  • std::int32_t

  • std::uint32_t

typename Method = oneapi::mkl::rng::hypergeometric_method::by_default

Transformation method, which will be used for generation. Supported types:

  • oneapi::mkl::rng::hypergeometric_method::by_default

  • oneapi::mkl::rng::hypergeometric_method::h2pe

See description of the methods in Distributions methods template parameter.

Class Members

Routine

Description

hypergeometric()

Default constructor

explicit hypergeometric(std::int32_t l, std::int32_T s, std::int32_T m)

Constructor with parameters

std::int32_t s() const

Method to obtain lot size

std::int32_t m() const

Method to obtain size of sampling without replacement

std::int32_t l() const

Method to obtain number of marked elements

Member types

hypergeometric::method_type = Method

Description

The type which defines transformation method for generation.

hypergeometric::result_type = IntType

Description

The type which defines type of generated random numbers.

Constructors

hypergeometric::hypergeometric()

Description

Default constructor for distribution, parameters set as l = 1, s = 1, m = 1.

explicit hypergeometric::hypergeometric(std::int32_t l, std::int32_T s, std::int32_T m)

Description

Constructor with parameters. l is a lot size, s is a size of sampling without replacement, m is a number of marked elements.

Throws

oneapi::mkl::invalid_argument

Exception is thrown when s<0, or m<0, or l<(s>m?s:m)

Characteristics

std::int32_t hypergeometric::l() const

Return Value

Returns the distribution parameter l - lot size value.

std::int32_t hypergeometric::s() const

Return Value

Returns the distribution parameter s - size of sampling without replacement.

std::int32_t hypergeometric::m() const

Return Value

Returns the distribution parameter m - number of marked elements.

Parent topic: Host Distributions