<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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)