Draw samples from uniform distribution and return sampled candidates.

        Parameters
        ----------
        candidates_like: mxnet.nd.NDArray or mxnet.sym.Symbol
            This input specifies the shape of the to be sampled candidates. #
            TODO shape selection is not yet supported. Shape must be specified
            in the constructor.

        Returns
        -------
        samples: mxnet.nd.NDArray or mxnet.sym.Symbol
            The sampled candidates of shape candidates_like.shape. Candidates
            are sampled based on the weights specified on creation of the
            UnigramCandidateSampler.

def hybrid_forward(self, F, candidates_like, prob, alias):
        # pylint: disable=unused-argument
        """Draw samples from uniform distribution and return sampled candidates.

        Parameters
        ----------
        candidates_like: mxnet.nd.NDArray or mxnet.sym.Symbol
            This input specifies the shape of the to be sampled candidates. #
            TODO shape selection is not yet supported. Shape must be specified
            in the constructor.

        Returns
        -------
        samples: mxnet.nd.NDArray or mxnet.sym.Symbol
            The sampled candidates of shape candidates_like.shape. Candidates
            are sampled based on the weights specified on creation of the
            UnigramCandidateSampler.
        """
        flat_shape = functools.reduce(operator.mul, self._shape)
        idx = F.random.uniform(low=0, high=self.N, shape=flat_shape,
                               dtype='float64').floor()
        prob = F.gather_nd(prob, idx.reshape((1, -1)))
        alias = F.gather_nd(alias, idx.reshape((1, -1)))
        where = F.random.uniform(shape=flat_shape,
                                 dtype='float64') < prob
        hit = idx * where
        alt = alias * (1 - where)
        candidates = (hit + alt).reshape(self._shape)

        return candidates.astype(self._dtype)