def random_scalar():
"""
- Generate a random scalar in ``[-RANDOM_MAX, RANDOM_MAX]``.
+ Generate a random scalar.
Returns
-------
float
+ A random real number between ``-RANDOM_MAX`` and ``RANDOM_MAX``,
+ inclusive.
Examples
--------
def random_nn_scalar():
"""
- Generate a random nonnegative scalar in ``[0, RANDOM_MAX]``.
+ Generate a random nonnegative scalar.
Returns
-------
float
+ A random nonnegative real number between zero and ``RANDOM_MAX``,
+ inclusive.
Examples
--------
def random_natural():
"""
- Generate a random natural number between ``1 and RANDOM_MAX``
- inclusive.
+ Generate a random natural number.
Returns
-------
int
+ A random natural number between ``1`` and ``RANDOM_MAX`` inclusive.
Examples
--------
matrix
A new matrix whose entries are random floats chosen uniformly from
- the interval [-RANDOM_MAX, RANDOM_MAX].
+ the interval ``[-RANDOM_MAX, RANDOM_MAX]``.
Examples
--------
matrix
A new matrix, Lyapunov-like on the ice-cream cone in ``dims``
dimensions, whose free entries are random floats chosen uniformly
- from the interval [-RANDOM_MAX, RANDOM_MAX].
+ from the interval ``[-RANDOM_MAX, RANDOM_MAX]``.
References
----------
def random_orthant_game():
"""
- Generate the ``L``, ``K``, ``e1``, and ``e2`` parameters for a
- random game over the nonnegative orthant, and return the
- corresponding :class:`SymmetricLinearGame`.
+ Generate a random game over the nonnegative orthant.
+
+ We generate each of ``L``, ``K``, ``e1``, and ``e2`` randomly within
+ the constraints of the nonnegative orthant, and then construct a
+ game from them. The process is repeated until we generate a game with
+ a condition number under ``MAX_COND``.
+
+ Returns
+ -------
+
+ SymmetricLinearGame
+ A random game over some nonnegative orthant.
- We keep going until we generate a game with a condition number under
- MAX_COND.
"""
ambient_dim = random_natural() + 1
K = NonnegativeOrthant(ambient_dim)
def random_icecream_game():
"""
- Generate the ``L``, ``K``, ``e1``, and ``e2`` parameters for a
- random game over the ice-cream cone, and return the corresponding
- :class:`SymmetricLinearGame`.
+ Generate a random game over the ice-cream cone.
+
+ We generate each of ``L``, ``K``, ``e1``, and ``e2`` randomly within
+ the constraints of the ice-cream cone, and then construct a game
+ from them. The process is repeated until we generate a game with a
+ condition number under ``MAX_COND``.
+
+ Returns
+ -------
+
+ SymmetricLinearGame
+ A random game over some ice-cream cone.
- We keep going until we generate a game with a condition number under
- MAX_COND.
"""
# Use a minimum dimension of two to avoid divide-by-zero in
# the fudge factor we make up later.
things are Lyapunov-like on the nonnegative orthant. That process is
repeated until the condition number of the resulting game is within
``MAX_COND``.
+
+ Returns
+ -------
+
+ SymmetricLinearGame
+ A random game over some nonnegative orthant whose ``payoff`` method
+ is based on a Lyapunov-like ``L`` operator.
+
"""
G = random_orthant_game()
L = random_diagonal_matrix(G._K.dimension())
to have a :func:`random_lyapunov_like_icecream` operator. That
process is repeated until the condition number of the resulting game
is within ``MAX_COND``.
+
+ Returns
+ -------
+
+ SymmetricLinearGame
+ A random game over some ice-cream cone whose ``payoff`` method
+ is based on a Lyapunov-like ``L`` operator.
+
"""
G = random_icecream_game()
L = random_lyapunov_like_icecream(G._K.dimension())
to have a :func:`random_nonnegative_matrix` as its operator. That
process is repeated until the condition number of the resulting game
is within ``MAX_COND``.
+
+ Returns
+ -------
+
+ SymmetricLinearGame
+ A random game over some nonnegative orthant whose ``payoff`` method
+ is based on a positive ``L`` operator.
+
"""
G = random_orthant_game()
"""
Scale the given game by a random nonnegative amount.
+ We re-attempt the scaling with a new random number until the
+ resulting scaled game has an acceptable condition number.
+
Parameters
----------
- G : :class:`SymmetricLinearGame`
+ G : SymmetricLinearGame
The game that you would like to scale.
Returns
-------
- (float, :class:`SymmetricLinearGame`)
+ (float, SymmetricLinearGame)
A pair containing the both the scaling factor and the new scaled game.
"""
"""
Translate the given game by a random amount.
+ We re-attempt the translation with new random scalars until the
+ resulting translated game has an acceptable condition number.
+
Parameters
----------
- G : :class:`SymmetricLinearGame`
+ G : SymmetricLinearGame
The game that you would like to translate.
Returns
-------
- (float, :class:`SymmetricLinearGame`)
+ (float, SymmetricLinearGame)
A pair containing the both the translation distance and the new
scaled game.