From: Michael Orlitzky Date: Fri, 10 Apr 2026 00:06:23 +0000 (-0400) Subject: mjo/clan: add new random_clan() function X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=4e557e5a9fe8e702689f87a06906511ddafc816e;p=sage.d.git mjo/clan: add new random_clan() function --- diff --git a/mjo/clan/all.py b/mjo/clan/all.py index b835018..373e744 100644 --- a/mjo/clan/all.py +++ b/mjo/clan/all.py @@ -3,6 +3,7 @@ All user-facing imports from mjo.clan. """ from mjo.clan.clan import Clans from mjo.clan.jordan_spin_clan import JordanSpinClan +from mjo.clan.random import random_clan from mjo.clan.t_algebra_clan import ( ComplexHermitianClan, RealSymmetricClan ) from mjo.clan.trivial_clan import TrivialClan diff --git a/mjo/clan/random.py b/mjo/clan/random.py new file mode 100644 index 0000000..246d51e --- /dev/null +++ b/mjo/clan/random.py @@ -0,0 +1,38 @@ +r""" +Random test helpers. +""" + +def random_clan(): + r""" + Return a random clan from a pre-determined list. + + At the moment, this is guaranteed to return a normal decomposition. + + SETUP:: + + sage: from mjo.clan.clan import Clans + sage: from mjo.clan.random import random_clan + + EXAMPLES:: + + sage: random_clan() in Clans + True + + """ + from sage.rings.rational_field import QQ + from random import choice + + from mjo.clan.vinberg_clan import VinbergClan + from mjo.clan.jordan_spin_clan import JordanSpinClan + from mjo.clan.t_algebra_clan import (ComplexHermitianClan, + RealSymmetricClan) + from mjo.clan.trivial_clan import TrivialClan + + choices = { TrivialClan: [QQ], + VinbergClan: [QQ], + JordanSpinClan: tuple(range(1,10)), + RealSymmetricClan: tuple(range(1,7)), + ComplexHermitianClan: tuple(range(1,6)) } + key = choice(list(choices.keys())) + arg = choice(choices[key]) + return key(arg)