¿Cómo creo una lista de números aleatorios sin duplicados?

Resuelto iCodeLikeImDrunk asked hace 12 años • 21 respuestas

Intenté usar random.randint(0, 100), pero algunos números eran iguales. ¿Existe algún método/módulo para crear una lista de números aleatorios únicos?

iCodeLikeImDrunk avatar Mar 18 '12 09:03 iCodeLikeImDrunk
Aceptado

Esto devolverá una lista de 10 números seleccionados del rango del 0 al 99, sin duplicados.

import random
random.sample(range(100), 10)
Greg Hewgill avatar Mar 18 '2012 02:03 Greg Hewgill

Puedes usar la función aleatoria del módulo aleatorio de esta manera:

import random

nums = list(range(1, 100)) # list of integers from 1 to 99
                           # adjust this boundaries to fit your needs
random.shuffle(nums)
print(nums) # <- List of unique random numbers

Tenga en cuenta aquí que el método aleatorio no devuelve ninguna lista como cabría esperar, solo baraja la lista pasada por referencia.

Ricardo Murillo avatar Mar 18 '2012 03:03 Ricardo Murillo

Primero puede crear una lista de números desde ahasta b, donde ay bson respectivamente los números más pequeños y mayores de su lista, luego mezclarla con el algoritmo de Fisher-Yates o utilizando el random.shufflemétodo de Python.

ben avatar Mar 18 '2012 02:03 ben