Estoy empezando a aprender Python, traté de generar valores aleatorios al pasar un número negativo y positivo. Vamos a decir -1
, 1
.Cómo generar valor aleatorio negativo en python
¿Cómo debo hacer esto en python?
Estoy empezando a aprender Python, traté de generar valores aleatorios al pasar un número negativo y positivo. Vamos a decir -1
, 1
.Cómo generar valor aleatorio negativo en python
¿Cómo debo hacer esto en python?
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()
>>> import random
>>> random.uniform(-1, 1)
0.4779007751444888
>>> random.uniform(-1, 1)
-0.10028581710574902
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].
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
También puede hacer algo como esto
import random
random.choice([-1, 1])
'rand def(): return 4 # Generado por una tirada de dados justa. Garantizado para ser al azar. –
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
@ 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