2008-09-16 11 views

Respuesta

34

Es probable que tenga un random.py o random.pyc archivo con el nombre en el directorio de trabajo. Eso está sombreando el módulo aleatorio incorporado. Debe cambiar el nombre de random.py a algo como my_random.py y/o eliminar el archivo random.pyc.

de saber con seguridad lo que está pasando, hacer esto:

>>> import random 
>>> print random.__file__ 

Eso le mostrará exactamente qué archivo se importa.

+0

En el shell de Python 3.3.2, tengo que omitir la 'impresión' para obtener la ruta del archivo. – Tony

+1

@Tony en Python 3, 'print' es una función. Por lo tanto, podría escribir 'print (random .__ file __)'. – Zenadix

2

Creo que necesita dar más información. Realmente no es posible responder por qué no funciona en función de la información en la pregunta. La documentación básica para el azar se encuentra en: https://docs.python.org/library/random.html

Puede consultar allí.

0

¿Puedes publicar un ejemplo de lo que estás tratando de hacer? No está claro a partir de su pregunta cuál es el problema real.

Aquí hay un ejemplo de cómo utilizar el módulo random:

import random 
print random.randint(0,10) 
1
Python 2.5.2 (r252:60911, Jun 16 2008, 18:27:58) 
[GCC 3.3.4 (pre 3.3.5 20040809)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import random 
>>> random.seed() 
>>> dir(random) 
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '_acos', '_ceil', '_cos', '_e', '_exp', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'uniform', 'vonmisesvariate', 'weibullvariate'] 
>>> random.randint(0,3) 
3 
>>> random.randint(0,3) 
1 
>>> 
0

parece funcionar bien para mí. Echa un vistazo a los métodos de la official python documentation para al azar:

>>> import random 
>>> random.random() 
0.69130806168332215 
>>> random.uniform(1, 10) 
8.8384170917436293 
>>> random.randint(1, 10) 
4 
0

Obras para mí:

Python 2.5.1 (r251:54863, Jun 15 2008, 18:24:51) 
[GCC 4.3.0 20080428 (Red Hat 4.3.0-8)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import random 
>>> brothers = ['larry', 'curly', 'moe'] 
>>> random.choice(brothers) 
'moe' 
>>> random.choice(brothers) 
'curly' 
1

¿Es posible que el script que ejecuta se llame al azar.py?

3

Esto sucede porque tiene un archivo random.py en la ruta de búsqueda de python, muy probablemente el directorio actual.

Python está buscando módulos utilizando sys.path, que normalmente incluye el directorio actual antes de los paquetes de sitio estándar, que contiene el esperado random.py.

Se espera que esto se solucione en Python 3.0, por lo que no puede importar módulos desde el directorio actual sin utilizar una sintaxis de importación especial.

Simplemente elimine random.py + random.pyc en el directorio donde está ejecutando python y funcionará bien.