2012-05-14 39 views

Respuesta

5
import random 

def r(minimum, maximum): 
    return minimum + (maximum - minimum) * random.random() 

print r(-1, 1) 

EDIT: @ San4ez de random.uniform(-1, 1) es la forma correcta. No hay necesidad de reinventar la rueda ...

De todos modos, random.uniform() está codificado como:

def uniform(self, a, b): 
    "Get a random number in the range [a, b) or [a, b] depending on rounding." 
    return a + (b-a) * self.random() 
+1

'rand def(): return 4 # Generado por una tirada de dados justa. Garantizado para ser al azar. –

+0

Muchas gracias. Pero no puedo hacerlo de esta manera. Donde quiero pasar el valor como argumento mientras ejecuto el script. . #!/Usr/bin/env python import sys, al azar r = sys.argv [1] y = sys.argv [2] random.range de impresión (y, r) – user1393251

+0

@ user1393251 - que puede hacer de esta manera (mi método 'r' se llama de la misma manera que el' random.uniform' correcto), solo estoy reinventando la rueda aquí ... Tome la respuesta de San4ez. – eumiro

23

Uso random.uniform(a, b)

>>> import random 
>>> random.uniform(-1, 1) 
0.4779007751444888 
>>> random.uniform(-1, 1) 
-0.10028581710574902 
1

La mayoría de los idiomas tienen una función que devuelva un número aleatorio en el rango [0 , 1], que luego puede manipular para adaptarse al rango que necesita. En python, la función es random.random. Así que para su rango de [-1, 1], se puede hacer esto:

import random 
random_number = random.random() * 2 - 1 

Al duplicar el número obtenemos una gama de [0, 2], y restando uno de ella, obtenemos [- 1, 1].

2

si quieres integer in a specified range:

print random.randrange(-1, 2) 

que utiliza la misma convención como range, por lo que no se incluye el límite superior.

random.uniform hace algo similar si necesita valores flotantes, pero es not always clear si se incluye el límite superior o no

Cuestiones relacionadas