sympy: what's wrong with this picture?

Mensanator mensanator at aol.com
Mon Mar 3 16:47:42 EST 2008


On Mar 3, 2:49 pm, Carl Banks <pavlovevide... at gmail.com> wrote:
> On Mar 3, 3:40 pm, Mensanator <mensana... at aol.com> wrote:
>
>
>
>
>
> > Notice anything funny about the "random" choices?
>
> > import sympy
> > import time
> > import random
>
> > f = [i for i in sympy.primerange(1000,10000)]
>
> > for i in xrange(10):
> >   f1 = random.choice(f)
> >   print f1,
> >   f2 = random.choice(f)
> >   print f2,
> >   C = f1*f2
> >   ff = None
> >   ff = sympy.factorint(C)
> >   print ff
>
> > ##  7307 7243 [(7243, 1), (7307, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
> > ##  8563 2677 [(2677, 1), (8563, 1)]
> > ##  4091 6829 [(4091, 1), (6829, 1)]
>
> > As in, "they're NOT random".
>
> > The random number generator is broken by the sympy.factorint()
> > function.
>
> > Random.choice() works ok if the factorint() function commented out.
>
> > ##  6089 1811 None
> > ##  6449 1759 None
> > ##  9923 4639 None
> > ##  4013 4889 None
> > ##  4349 2029 None
> > ##  6703 8677 None
> > ##  1879 1867 None
> > ##  5153 5279 None
> > ##  2011 4937 None
> > ##  7253 5507 None
>
> > This makes sympy worse than worthless, as it f***s up other modules.
>
> Dude, relax.
>
> It's just a bug--probably sympy is messing with the internals of the
> random number generator.  It would be a simple fix.  Instead of
> b****ing about it, file a bug report.  

I did.

> Or better yet, submit a patch.

I would if I knew what the problem was.

I posted it here because someone recommended it.
I'm simply un-recommending it. Those who don't care
needn't pay any attention. Those who do should be
glad that faults are pointed out when found.

>
> Carl Banks



More information about the Python-list mailing list