2011-07-28 58 views
7

¿cómo puedo definir el rango decimal entre 0 y 1 en python? La función Range() en python devuelve solo valores int. Tengo algunas variables en mi código cuyo número varía de 0 a 1. No estoy seguro de cómo incluir eso en el código. Graciascómo crear un rango de números decimales aleatorios entre 0 y 1

Agregaría más a mi pregunta. No hay paso ni ningún valor de incremento que genere los valores decimales. Tengo que usar una variable que podría tener un valor de 0 a 1. Puede ser cualquier valor. Pero el programa debe saber su límite, que tiene un rango de 0 a 1. Espero haber dejado en claro. Gracias

http://docs.python.org/library/random.html

+1

Tiene que ser más específico. De 0 a 1 podría estar entre 0 y valores infinitos. ¿Cuáles son los pasos? – Jacob

+0

Gracias pero no hay paso. Podría ser cualquier valor entre 0 y 1. Simplemente tengo que una variable que tendría valores entre 0 y 1. – zingy

+2

@eryksun Sí, necesito un rango aleatorio. Debería haber puesto la palabra al azar. – zingy

Respuesta

9

Si usted está buscando una lista de números aleatorios entre 0 y 1, que cree que puede tener un buen uso del módulo random

>>> import random 
>>> [random.random() for _ in range(0, 10)] 
[0.9445162222544106, 0.17063032908425135, 0.20110591438189673, 
0.8392299590767177, 0.2841838551284578, 0.48562600723583027, 
0.15468445000916797, 0.4314435745393854, 0.11913358976315869, 
0.6793348370697525] 
+0

Sí, esto funcionaría.Gracias – zingy

0

Parece que las listas por comprensión sería bastante útil en este caso.

mylist = [x/n for x in range(n)] 

Algo así? Mi Python está oxidado.

+0

Creo que esto funcionará. Gracias – zingy

+1

Si quiere una lista de 0, entonces sí, funcionará perfectamente. División entera ftl! – geoffspear

+0

Creo que, en versiones recientes de Python, esto realmente funciona bien. ¿No tienes que usar un // b para obtener la división de enteros? Por favor revisa esto, Wooble. – Patrick87

5
for i in range(100): 
    i /= 100.0 
    print i 

Además, eche un vistazo a decimal.

1
def float_range(start, end, increment): 
    int_start = int(start/increment) 
    int_end = int(end/increment) 
    for i in range(int_start, int_end): 
     yield i * increment 
+0

Gracias, pero no hay un incremento en particular. Es solo un valor aleatorio entre 0 y 1. – zingy

0
>>> from decimal import Decimal 
>>> [Decimal(x)/10 for x in xrange(11)] 
[Decimal("0"), Decimal("0.1"), Decimal("0.2"), Decimal("0.3"), Decimal("0.4"), Decimal("0.5"), Decimal("0.6"), Decimal("0.7"), Decimal("0.8"), Decimal("0.9"), Decimal("1")] 

Editar, dada comentario sobre la respuesta de Mark aleatoria:

Si realmente no quieren un rango sin problemas incrementando, sino más bien un número aleatorio entre 0 y 1, utilice random.random().

+0

@ Wooble hhmm Supongo que random.random() funciona perfecto. Gracias – zingy

0

Este número decimal es la salida entre 0-1 con tamaño de paso 0.1

import numpy as np 
mylist = np.arange(0, 1, 0.1) 
+0

función útil! pero creo que el op cambió la pregunta para especificar que las entradas deben ser aleatorias, mientras que arange hará una serie ordenada. – navicore

Cuestiones relacionadas