Random in python 2.5 not working?

Asked by At

I am trying to use the import random statement in python, but it doesn't appear to have any methods in it to use.

Am I missing something?

8 Answers

35
Jerry Hill On Best Solutions

You probably have a file named random.py or random.pyc in your working directory. That's shadowing the built-in random module. You need to rename random.py to something like my_random.py and/or remove the random.pyc file.

To tell for sure what's going on, do this:

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

That will show you exactly which file is being imported.

2
jamuraa On

I think you need to give some more information. It's not really possible to answer why it's not working based on the information in the question. The basic documentation for random is at: https://docs.python.org/library/random.html

You might check there.

0
Chris AtLee On

Can you post an example of what you're trying to do? It's not clear from your question what the actual problem is.

Here's an example of how to use the random module:

import random
print random.randint(0,10)
1
Vinko Vrsalovic On
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
Chris Bunch On

Seems to work fine for me. Check out the methods in the official python documentation for random:

>>> import random
>>> random.random()
0.69130806168332215
>>> random.uniform(1, 10)
8.8384170917436293
>>> random.randint(1, 10)
4
0
Thomas Vander Stichele On

Works for me:

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
tzot On

Is it possible that the script you run is called random.py itself?

3
Johan Dahlin On

This is happening because you have a random.py file in the python search path, most likely the current directory.

Python is searching for modules using sys.path, which normally includes the current directory before the standard site-packages, which contains the expected random.py.

This is expected to be fixed in Python 3.0, so that you can't import modules from the current directory without using a special import syntax.

Just remove the random.py + random.pyc in the directory you're running python from and it'll work fine.