domingo, 17 de septiembre de 2017

Generación de números aleatorios sin repetición en Python

Puede descargar el archivo: sinrepeticion.py

Veamos varios métodos para conseguirlo. Partimos de una lista de números enteros entre 1 y 100 y deseamos tomar 10 números al azar.

Método 1

Seguidamente vamos a mostrar el código para generar números aleatorios sin repetición.

# Generación de 10 números aleatorios entre 1 y 100 sin repetición   
import random  
#creamos una lista con un primer número aleatorio  
lista=[random.randrange(100)+1] #el primer número nunca se repite  
n=1 #n indica la cantidad de números en la lista  
while n<10:  
 x=random.randrange(100)+1  
 norepe=True #suponemos inicialmente que el número generado no está repetido  
 while norepe:  
  for j in range(len(lista)):  
   if x==lista[j]:  
    norepe=False #aquí hemos detectado que el número si esta repetido  
  if norepe:  
   lista.append(x)  
   n+=1  
print(lista)  


Método 2

Veamos otro método programado de forma breve para obtener aleatorios únicos en una lista.

# Generación de 10 números aleatorios entre 1 y 100 sin repetición  
import random  
print(random.sample(range(1,101), 10))  


Método 3

En este método la idea es crear la lista entre 1 y 100, luego la desordenamos y finalmente imprimimos de ella únicamente los 10 primeros elementos.

# Generación de 10 números aleatorios entre 1 y 100 sin repetición  
import random  
miLista=list(range(1,101))  #creamos una lista del 1 al 100  
random.shuffle(miLista)     #desordenamos la lista  
print(miLista[:10])         #mostramos únicamente los 10 primeros  


No hay comentarios:

Publicar un comentario