Class thrust::random::uniform_int_distribution

A uniform_int_distribution random number distribution produces signed or unsigned integer uniform random numbers from a given range.

The following code snippet demonstrates examples of using a uniform_int_distribution with a random number engine to produce random integers drawn from a given range:

#include <thrust/random/linear_congruential_engine.h>
#include <thrust/random/uniform_int_distribution.h>

int main()
{
  // create a minstd_rand object to act as our source of randomness
  thrust::minstd_rand rng;

  // create a uniform_int_distribution to produce ints from [-7,13]
  thrust::uniform_int_distribution<int> dist(-7,13);

  // write a random number from the range [-7,13] to standard output
  std::cout << dist(rng) << std::endl;

  // write the range of the distribution, just in case we forgot
  std::cout << dist.min() << std::endl;

  // -7 is printed

  std::cout << dist.max() << std::endl;

  // 13 is printed

  // write the parameters of the distribution (which happen to be the bounds) to standard output
  std::cout << dist.a() << std::endl;

  // -7 is printed

  std::cout << dist.b() << std::endl;

  // 13 is printed

  return 0;
}

Template Parameters: IntType: The type of integer to produce.

#include <thrust/random/uniform_int_distribution.h>
template <typename IntType = int> class thrust::random::uniform_int_distribution { public:   /* The type of the integer produced by this uniform_int_distribution. */  typedef see below result_type;
   /* The type of the object encapsulating this uniform_int_distribution's parameters. */  typedef see below param_type;
  explicit _CCCL_HOST_DEVICE   uniform_int_distribution(IntType a = 0,     IntType b = THRUST_NS_QUALIFIER::detail::integer_traits< IntType >::const_max);
  explicit _CCCL_HOST_DEVICE   uniform_int_distribution(const param_type & parm);
  _CCCL_HOST_DEVICE void   reset();
  template <typename UniformRandomNumberGenerator>   _CCCL_HOST_DEVICE result_type   operator()(UniformRandomNumberGenerator & urng);
  template <typename UniformRandomNumberGenerator>   _CCCL_HOST_DEVICE result_type   operator()(UniformRandomNumberGenerator & urng,     const param_type & parm);
  _CCCL_HOST_DEVICE result_type   a() const;
  _CCCL_HOST_DEVICE result_type   b() const;
  _CCCL_HOST_DEVICE param_type   param() const;
  _CCCL_HOST_DEVICE void   param(const param_type & parm);
  _CCCL_HOST_DEVICE result_type min   THRUST_PREVENT_MACRO_SUBSTITUTION() const;
  _CCCL_HOST_DEVICE result_type max   THRUST_PREVENT_MACRO_SUBSTITUTION() const; };

Member Types

Typedef thrust::random::uniform_int_distribution::result_type

typedef IntTyperesult_type; The type of the integer produced by this uniform_int_distribution.

Typedef thrust::random::uniform_int_distribution::param_type

typedef thrust::pair< IntType, IntType >param_type; The type of the object encapsulating this uniform_int_distribution's parameters.

Member Functions

Function thrust::random::uniform_int_distribution::uniform_int_distribution

explicit _CCCL_HOST_DEVICE uniform_int_distribution(IntType a = 0,   IntType b = THRUST_NS_QUALIFIER::detail::integer_traits< IntType >::const_max); This constructor creates a new uniform_int_distribution from two values defining the range of the distribution.

Function Parameters:

  • a The smallest integer to potentially produce. Defaults to 0.
  • b The largest integer to potentially produce. Defaults to the largest representable integer in the platform.

Function thrust::random::uniform_int_distribution::uniform_int_distribution

explicit _CCCL_HOST_DEVICE uniform_int_distribution(const param_type & parm); This constructor creates a new uniform_int_distribution from a param_type object encapsulating the range of the distribution.

Function Parameters: parm: A param_type object encapsulating the parameters (i.e., the range) of the distribution.

Function thrust::random::uniform_int_distribution::reset

_CCCL_HOST_DEVICE void reset(); This does nothing. It is included to conform to the requirements of the RandomDistribution concept.

Function thrust::random::uniform_int_distribution::operator()

template <typename UniformRandomNumberGenerator> _CCCL_HOST_DEVICE result_type operator()(UniformRandomNumberGenerator & urng); This method produces a new uniform random integer drawn from this uniform_int_distribution's range using a UniformRandomNumberGenerator as a source of randomness.

Function Parameters: urng: The UniformRandomNumberGenerator to use as a source of randomness.

Function thrust::random::uniform_int_distribution::operator()

template <typename UniformRandomNumberGenerator> _CCCL_HOST_DEVICE result_type operator()(UniformRandomNumberGenerator & urng,   const param_type & parm); This method produces a new uniform random integer as if by creating a new uniform_int_distribution from the given param_type object, and calling its operator() method with the given UniformRandomNumberGenerator as a source of randomness.

Function Parameters:

  • urng The UniformRandomNumberGenerator to use as a source of randomness.
  • parm A param_type object encapsulating the parameters of the uniform_int_distribution to draw from.

Function thrust::random::uniform_int_distribution::a

_CCCL_HOST_DEVICE result_type a() const; This method returns the value of the parameter with which this uniform_int_distribution was constructed.

Returns: The lower bound of this uniform_int_distribution's range.

Function thrust::random::uniform_int_distribution::b

_CCCL_HOST_DEVICE result_type b() const; This method returns the value of the parameter with which this uniform_int_distribution was constructed.

Returns: The upper bound of this uniform_int_distribution's range.

Function thrust::random::uniform_int_distribution::param

_CCCL_HOST_DEVICE param_type param() const; This method returns a param_type object encapsulating the parameters with which this uniform_int_distribution was constructed.

Returns: A param_type object enapsulating the range of this uniform_int_distribution.

Function thrust::random::uniform_int_distribution::param

_CCCL_HOST_DEVICE void param(const param_type & parm); This method changes the parameters of this uniform_int_distribution using the values encapsulated in a given param_type object.

Function Parameters: parm: A param_type object encapsulating the new range of this uniform_int_distribution.

Function thrust::random::uniform_int_distribution::THRUST_PREVENT_MACRO_SUBSTITUTION

_CCCL_HOST_DEVICE result_type min THRUST_PREVENT_MACRO_SUBSTITUTION() const; This method returns the smallest integer this uniform_int_distribution can potentially produce.

Returns: The lower bound of this uniform_int_distribution's range.

Function thrust::random::uniform_int_distribution::THRUST_PREVENT_MACRO_SUBSTITUTION

_CCCL_HOST_DEVICE result_type max THRUST_PREVENT_MACRO_SUBSTITUTION() const; This method returns the largest integer this uniform_int_distribution can potentially produce.

Returns: The upper bound of this uniform_int_distribution's range.