diff --git a/pytensor/link/numba/dispatch/random.py b/pytensor/link/numba/dispatch/random.py index 50c9bf4578..36618ceb26 100644 --- a/pytensor/link/numba/dispatch/random.py +++ b/pytensor/link/numba/dispatch/random.py @@ -102,6 +102,15 @@ def random(rng, p): return random +@numba_core_rv_funcify.register(ptr.StudentTRV) +def numba_core_StudentTRV(op, node): + @numba_basic.numba_njit + def random_fn(rng, df, loc, scale): + return loc + scale * rng.standard_t(df) + + return random_fn + + @numba_core_rv_funcify.register(ptr.HalfNormalRV) def numba_core_HalfNormalRV(op, node): @numba_basic.numba_njit diff --git a/tests/link/numba/test_random.py b/tests/link/numba/test_random.py index d2301a54cb..c311e87657 100644 --- a/tests/link/numba/test_random.py +++ b/tests/link/numba/test_random.py @@ -592,6 +592,23 @@ def test_aligned_RandomVariable(rv_op, dist_args, size): "gumbel_r", lambda *args: args, ), + ( + ptr.t, + [ + (pt.scalar(), np.array(np.e, dtype=np.float64)), + ( + pt.dvector(), + np.array([1.0, 2.0], dtype=np.float64), + ), + ( + pt.dscalar(), + np.array(np.pi, dtype=np.float64), + ), + ], + (2,), + "t", + lambda *args: args, + ), ], ) def test_unaligned_RandomVariable(rv_op, dist_args, base_size, cdf_name, params_conv):