Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/12/2009, 16:40
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Números aleatorios sin repetición

Cita:
Iniciado por AlvaroG Ver Mensaje
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.

Hola AlvaroG, cuanto tiempo sin leerte. Unas pequeñas aclaraciones, ese algoritmo se puede quedar en un ciclo infinito si la cantidad es mayor al margen, por ejemplo cantidad=30, min=1, max=10 jamas podra llenar la cantidad que se le pidio (por el principio del palomar). Recomendaría validar.

Otra cosa, es para evitar el if, puedes usar set (conjuntos) y al final pasarlo por la función list. Esto no se si sera mas eficiente.