%feature("docstring") OT::LowDiscrepancyExperiment
"LowDiscrepancy experiment.

Available constructors:
    LowDiscrepancyExperiment(*size, restart*)

    LowDiscrepancyExperiment(*sequence, size, restart*)

    LowDiscrepancyExperiment(*sequence, distribution, size, restart*)

Parameters
----------
size : positive int
    Number :math:`N` of points of the sequence.
sequence : :class:`~openturns.LowDiscrepancySequence`
    Sequence of points :math:`(u_1, \cdots, u_N)` with low discrepancy.
    If not specified, the sequence is a :class:`~openturns.SobolSequence`.
distribution :
    Distribution :math:`\mu` of dimension :math:`n` with an independent copula.
    The low discrepancy sequence :math:`(u_1, \cdots, u_N)` is uniformly
    distributed over :math:`[0,1]^n`. We use the marginal transformation
    :math:`\Xi_i =F_i^{-1}(u_i)` to generate points :math:`(\Xi_i)_{i\in I}`
    according to the distribution :math:`\mu`. The weights are all equal to
    :math:`1/N`.
restart : bool
    Flag to tell if the low discrepancy sequence must be restarted from
    its initial state at each change of distribution or not.
    Default is *True*: the sequence is restarted at each change of
    distribution.

Notes
-----
The :meth:`generate` method generates points :math:`(\Xi_i)_{i \in I}`
independently from the distribution :math:`\mu`. When the :meth:`generate`
method is recalled, the generated sample changes.

See also
--------
WeightedExperiment

Examples
--------
>>> import openturns as ot
>>> distribution = ot.ComposedDistribution([ot.Uniform(0.0, 1.0)] * 2)

Generate the sample with a reinitialization of the sequence at each change
of distribution:

>>> myPlane = ot.LowDiscrepancyExperiment(ot.SobolSequence(), distribution, 5, True)
>>> print(myPlane.generate())
    [ X0    X1    ]
0 : [ 0.5   0.5   ]
1 : [ 0.75  0.25  ]
2 : [ 0.25  0.75  ]
3 : [ 0.375 0.375 ]
4 : [ 0.875 0.875 ]
>>> print(myPlane.generate())
    [ X0     X1     ]
0 : [ 0.625  0.125  ]
1 : [ 0.125  0.625  ]
2 : [ 0.1875 0.3125 ]
3 : [ 0.6875 0.8125 ]
4 : [ 0.9375 0.0625 ]
>>> myPlane.setDistribution(distribution)
>>> print(myPlane.generate())
    [ X0    X1    ]
0 : [ 0.5   0.5   ]
1 : [ 0.75  0.25  ]
2 : [ 0.25  0.75  ]
3 : [ 0.375 0.375 ]
4 : [ 0.875 0.875 ]

Generate the sample keeping the previous state of the sequence at each change
of distribution:

>>> myPlane = ot.LowDiscrepancyExperiment(ot.SobolSequence(), distribution, 5, False)
>>> print(myPlane.generate())
    [ X0    X1    ]
0 : [ 0.5   0.5   ]
1 : [ 0.75  0.25  ]
2 : [ 0.25  0.75  ]
3 : [ 0.375 0.375 ]
4 : [ 0.875 0.875 ]
>>> print(myPlane.generate())
    [ X0     X1     ]
0 : [ 0.625  0.125  ]
1 : [ 0.125  0.625  ]
2 : [ 0.1875 0.3125 ]
3 : [ 0.6875 0.8125 ]
4 : [ 0.9375 0.0625 ]
>>> myPlane.setDistribution(distribution)
>>> print(myPlane.generate())
    [ X0     X1     ]
0 : [ 0.4375 0.5625 ]
1 : [ 0.3125 0.1875 ]
2 : [ 0.8125 0.6875 ]
3 : [ 0.5625 0.4375 ]
4 : [ 0.0625 0.9375 ]
"
// ---------------------------------------------------------------------

%feature("docstring") OT::LowDiscrepancyExperiment::getSequence
"Return the sequence.

Returns
-------
sequence : :class:`~openturns.LowDiscrepancySequence`
    Sequence of points :math:`(u_1, \cdots, u_N)` with low discrepancy."

// ---------------------------------------------------------------------

%feature("docstring") OT::LowDiscrepancyExperiment::getRestart
"Return the value of the *restart* flag.

Returns
-------
restart : bool
    The value of the *restart* flag."

// ---------------------------------------------------------------------

%feature("docstring") OT::LowDiscrepancyExperiment::setRestart
"Set the value of the *restart* flag.

Parameters
----------
restart : bool
    The value of the *restart* flag. If equals to *True*, the low
    discrepancy sequence is restarted at each change of distribution,
    else it is changed only if the new distribution has a dimension
    different from the current one.
"

// ---------------------------------------------------------------------

%feature("docstring") OT::LowDiscrepancyExperiment::getRandomize
"Return the value of the *randomize* flag.

Returns
-------
randomize : bool
    The value of the *randomize* flag."

// ---------------------------------------------------------------------

%feature("docstring") OT::LowDiscrepancyExperiment::setRandomize
"Set the value of the *randomize* flag.

Parameters
----------
randomize : bool
    Use a cyclic scrambling of the low discrepancy sequence.
    Default is false.
"