thrust::shuffle

Defined in thrust/shuffle.h

template<typename DerivedPolicy, typename RandomIterator, typename URBG>
void thrust::shuffle(const thrust::detail::execution_policy_base<DerivedPolicy> &exec, RandomIterator first, RandomIterator last, URBG &&g)

shuffle reorders the elements [first, last) by a uniform pseudorandom permutation, defined by random engine g.

The algorithm’s execution is parallelized as determined by exec.

The following code snippet demonstrates how to use shuffle to create a random permutation using the thrust::host execution policy for parallelization:

#include <thrust/shuffle.h>
#include <thrust/random.h>
#include <thrust/execution_policy.h>
int A[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
const int N = sizeof(A)/sizeof(int);
thrust::default_random_engine g;
thrust::shuffle(thrust::host, A, A + N, g);
// A is now {6, 5, 8, 7, 2, 1, 4, 3, 10, 9}

See also

shuffle_copy

Parameters
  • exec – The execution policy to use for parallelization.

  • first – The beginning of the sequence to shuffle.

  • last – The end of the sequence to shuffle.

  • g – A UniformRandomBitGenerator

Template Parameters
  • DerivedPolicy – The name of the derived execution policy.

  • RandomIterator – is a random access iterator

  • URBG – is a uniform random bit generator