New submission from Steven D'Aprano:

While investigating issue 24546, I discovered that at least some versions of 
Python on 32-bit Linux have a double-rounding bug in multiplication which may 
lead to an unexpected IndexError in random.choice.

See http://bugs.python.org/issue24546 for additional discussion, but the short 
version is that due to double-rounding, if random.random returns (1. - 
2.**-53), int(i * random.random()) may return 1 for some i >= 2049, and 
random.choice will then evaluate seq[len(seq)], raising IndexError.

----------
messages: 246291
nosy: Serge Anuchin, haypo, mark.dickinson, r.david.murray, rhettinger, 
serhiy.storchaka, skrah, steven.daprano, tim.peters
priority: normal
severity: normal
status: open
title: random.choice IndexError due to double-rounding
type: behavior
versions: Python 2.7, Python 3.2, Python 3.3, Python 3.4, Python 3.5, Python 3.6

_______________________________________
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