Ver Mensaje Individual
  #6 (permalink)  
Antiguo 23/12/2009, 12:12
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Números aleatorios sin repetición

Cita:
Iniciado por Koan Ver Mensaje
Código python:
Ver original
  1. import random
  2.  
  3. for i in range(10):
  4.     print random.randint(1,30)
  5.     print
Si ya sabes que serán números entre 1 y 30, puedes hacer una pequeña modificación a la sugerencia de razpeitia:

Código Python:
Ver original
  1. # generas la lista
  2. numeros = range(1, 30)
  3.  
  4. #la mezclas
  5. shuffle(numeros)
  6.  
  7. #obtienes los primeros 10
  8. mis_numeros = numeros[:10]

Si no sabes qué tantos números puedes llegar a generar, la solución es comprobar a cada caso si el número que generas ya está en la lista o no. Esta opción es más lenta y el rendimiento se degrada rápidamente dada la necesidad de revisar la lista entera cada vez, pero para generar una lista de pocos números funciona bien:

Código Python:
Ver original
  1. def aleatorios(cantidad, min, max):
  2.     numeros = []
  3.  
  4.     while len(numeros) < cantidad:
  5.         numero = random.randint(min, max)
  6.  
  7.         if not numero in numeros:
  8.             numeros.append(numero)
  9.  
  10.     return numeros


Saludos.