+ @classmethod
+ def random_instance(cls, field=QQ, **kwargs):
+ """
+ Return a random instance of this type of algebra.
+
+ In subclasses for algebras that we know how to construct, this
+ is a shortcut for constructing test cases and examples.
+ """
+ if cls is FiniteDimensionalEuclideanJordanAlgebra:
+ # Red flag! But in theory we could do this I guess. The
+ # only finite-dimensional exceptional EJA is the
+ # octononions. So, we could just create an EJA from an
+ # associative matrix algebra (generated by a subset of
+ # elements) with the symmetric product. Or, we could punt
+ # to random_eja() here, override it in our subclasses, and
+ # not worry about it.
+ raise NotImplementedError
+
+ n = ZZ.random_element(1, cls._max_test_case_size())
+ return cls(n, field, **kwargs)
+
+