Intenté llegar al fondo de esto examinando algunas fuentes antiguas. Yo sospechaba que randint
se puso en práctica en poco tiempo entero de Python: lo que significa que si usted quiere un número aleatorio que incluyó INT_MAX
, que habría necesitado para llamar random.randrange(0, INT_MAX + 1)
que habría desbordado y dio lugar a argumentos de (0, 0)
o (0, INT_MIN)
función.
Sin embargo, mirando ya en the Python 1.5.2 sources incluso, en Lib/whrandom.py
vemos:
#
# Get a random integer in the range [a, b] including both end points.
# (Deprecated; use randrange below.)
#
def randint(self, a, b):
return self.randrange(a, b+1)
whrandom.randint
se continuó a ser obsoleto en 2.0, 2.1, 2.2 y 2.3; pero random.randint
se marcó como obsoleto en 2.1, aunque ya no se marcó como obsoleto en 2.2.
Además, random.py
from version 2.1 es el primero en observar en cadena de documentación random.randint
's:
def randrange(self, start, stop=None, step=1, int=int, default=None):
"""Choose a random item from range(start, stop[, step]).
This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
Do not supply the 'int' and 'default' arguments.
"""
La única fuente disponible más antigua que es the 0.9.1 source, y por lo que puedo decir, randint
no se puso en práctica en ese punto .
Por lo tanto, llego a la conclusión de que el razonamiento para randint
que incluye el punto final es conocido por el propio Guido en este momento; dado el docstring de Python 2.1, parece que la razón pudo haber sido un simple error.
(No respondiendo a la pregunta :) Bueno, podrías usar 'randrange'. – kennytm
Tal vez no soy tan inteligente como usted, pero no lo veo como una incoherencia. Lo veo simplemente como un método para que los programadores llamen a un número inclusivo al azar sin necesidad de utilizar operadores y números mágicos. Los mejores idiomas dan a sus usuarios vías a través de las cuales pueden ser creativos. – Musixauce3000
@ Musixauce3000 es una inconsistencia porque ambos métodos - 'range' y' randint' - aceptan el mismo valor lógico (es decir, un rango de números), pero ese valor se especifica de dos maneras diferentes (inconsistentes) (es decir, uno es inclusivo del punto final, el otro es exclusivo). –