def sample_distributions(self, sample_shape=(), seed=None, value=None,<EOL>name='<STR_LIT>'):
with self._name_scope(name):<EOL><INDENT>ds, xs = self._call_flat_sample_distributions(sample_shape, seed, value)<EOL>return self._unflatten(ds), self._unflatten(xs)<EOL><DEDENT>
Generate samples and the (random) distributions.

        Note that a call to `sample()` without arguments will generate a single
        sample.

        Args:
          sample_shape: 0D or 1D `int32` `Tensor`. Shape of the generated samples.
          seed: Python integer seed for generating random numbers.
          value: `list` of `Tensor`s in `distribution_fn` order to use to
            parameterize other ("downstream") distribution makers.
            Default value: `None` (i.e., draw a sample from each distribution).
          name: name prepended to ops created by this function.
            Default value: `"sample_distributions"`.

        Returns:
          distributions: a `tuple` of `Distribution` instances for each of
            `distribution_fn`.
          samples: a `tuple` of `Tensor`s with prepended dimensions `sample_shape`
            for each of `distribution_fn`.