code: def hybrid_forward(self, F, candidates_like, prob, alias):
          # pylint: disable=unused-argument
          
          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)
docs: 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.