Simple addition to random module - Student's t

Thomas Philips tkpmep at
Wed Sep 2 19:03:07 CEST 2009

On Sep 2, 12:28 pm, Mark Dickinson <dicki... at> wrote:
> On Sep 2, 2:51 pm, Thomas Philips <tkp... at> wrote:
> > def student_t(df):         # df is the number of degrees of freedom
> >     if df < 2  or int(df) != df:
> >        raise ValueError, 'student_tvariate: df must be a integer > 1'
> By the way, why do you exclude the possibility df=1 here?
> --
> Mark

I exclude df=1 hereBecause the variance is then infinite (in fact, the
distribution is then Cauchy). That said, your point is well taken;
allowing df=1 makes the Cauchy distribution available to users of
random, in much the same way as the Gamma makes the Chi-squared
available. Here's the revised code:

def student_tvariate(df):         # df is the number of degrees of
    if df < 1  or int(df) != df:
        raise ValueError, 'student_tvariate: df must be a positive

    x = random.gauss(0, 1)
    y = random.gammavariate(df/2.0, 2)

    return x / (math.sqrt(y/df))

I'll follow your suggestion, add in documentation and submit it to Thanks for your guidance.

Thomas Philips

More information about the Python-list mailing list