STINNER Victor added the comment:

> Victor, if people want to use getrandbits(), we should backport the Python3 
> code, not reinvent it from scratch.

Sorry, I don't understand your comment. Backport what? getrandbits() is 
available on Python 2 and Python 3, for Random and SystemRandom.

I propose to rewrite Random.randint() in random.py.

> Your "It doesn't handle negative numbers nor empty ranges" should be a hint 
> about what a pain it is to rewrite everything wholesale to use a 
> _fundamentally_ different method.

In fact, I didn't check if the my code works for negative numbers. A few more 
lines should be enough to handle them. I just wanted to show a short 
pseudo-code to discuss the idea.

I don't understand your point on the pain. It's easy to replace int(i * 
random.random()) with randint(0, i) (sorry, I'm too lazy to check if it should 
be i, i-1 or i+1 :-)).

The Glib library used floats in their g_rand_int_range() method, but the 
function now uses only integers. The GSL library also uses integers. I'm 
surprised that Python uses floats to generate random numbers. For me, they are 
less reliable than integers, I always fear a bias caused by complex rounding 
and corner cases.

Do other libraries and/or programming languages use float to generate a random 
integer?

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue24567>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to