Chris Angelico wrote: > The standard library function random.randint() seems to be quite slow > compared to random.random(), and worse in Python 3 than Python 2 [...] > But this still doesn't explain why randint() is so much slower. In > theory, randint() should be doing basically the same thing that I've > done here (multiply by the top value, truncate the decimal), only it's > in C instead of Python - if anything, it should be faster than doing > it manually, not slower.
What makes you think it's in C? I don't have Python 3.3a, but in 3.2 the random module is mostly Python. There is an import of _random, which presumably is in C, but it doesn't have a randint method: >>> import _random >>> _random.Random.randint Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: type object '_random.Random' has no attribute 'randint' I'm not seeing any significant difference in speed between 2.6 and 3.2: [steve@sylar ~]$ python2.6 -m timeit -s "from random import randint" "randint(0, 1000000)" 100000 loops, best of 3: 4.29 usec per loop [steve@sylar ~]$ python3.2 -m timeit -s "from random import randint" "randint(0, 1000000)" 100000 loops, best of 3: 4.98 usec per loop (The times are quite variable: the above are the best of three attempts.) -- Steven -- http://mail.python.org/mailman/listinfo/python-list