From: Michael Orlitzky Date: Sun, 28 Feb 2021 14:50:37 +0000 (-0500) Subject: eja: allow Cartesian products to be returned from random_eja(). X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=fcdcc7a37d4b5ee83d5ff0bc98fe2b63c61a7f51;p=sage.d.git eja: allow Cartesian products to be returned from random_eja(). --- diff --git a/mjo/eja/eja_algebra.py b/mjo/eja/eja_algebra.py index 7994900..5bb4cee 100644 --- a/mjo/eja/eja_algebra.py +++ b/mjo/eja/eja_algebra.py @@ -3480,17 +3480,15 @@ class RationalBasisCartesianProductEJA(CartesianProductEJA, RationalBasisEJA.CartesianProduct = RationalBasisCartesianProductEJA -random_eja = ConcreteEJA.random_instance - -# def random_eja(*args, **kwargs): -# J1 = ConcreteEJA.random_instance(*args, **kwargs) - -# # This might make Cartesian products appear roughly as often as -# # any other ConcreteEJA. -# if ZZ.random_element(len(ConcreteEJA.__subclasses__()) + 1) == 0: -# # Use random_eja() again so we can get more than two factors. -# J2 = random_eja(*args, **kwargs) -# J = cartesian_product([J1,J2]) -# return J -# else: -# return J1 +def random_eja(*args, **kwargs): + J1 = ConcreteEJA.random_instance(*args, **kwargs) + + # This might make Cartesian products appear roughly as often as + # any other ConcreteEJA. + if ZZ.random_element(len(ConcreteEJA.__subclasses__()) + 1) == 0: + # Use random_eja() again so we can get more than two factors. + J2 = random_eja(*args, **kwargs) + J = cartesian_product([J1,J2]) + return J + else: + return J1