Monday, February 7, 2011

Random in python 2.5 not working?

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?

  • 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: http://docs.python.org/lib/module-random.html

    You might check there.

    From jamuraa
  • 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)
    
  • 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
    >>>
    
  • 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
    
  • 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'
    
  • 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.

    From Jerry Hill
  • Is it possible that the script you run is called random.py itself?

  • 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.

0 comments:

Post a Comment