Mi pregunta es: ¿Cómo puedo generar números aleatorios no repetitivos en numpy?Número aleatorio no repetitivo en numpy
list = np.random.random_integers(20,size=(10))
Mi pregunta es: ¿Cómo puedo generar números aleatorios no repetitivos en numpy?Número aleatorio no repetitivo en numpy
list = np.random.random_integers(20,size=(10))
Si no insiste en usar NumPy, puede utilizar random.sample()
de la librería estándar:
print random.sample(range(20), 10)
Con NumPy, tendrá que utilizar numpy.random.shuffle()
y rebanar:
a = numpy.arange(20)
numpy.random.shuffle(a)
print a[:10]
generar simplemente una matriz que contiene el rango requerido de números, barajar ellos mediante el canje repetidamente al azar con el elemento 0 ª en la matriz. Esto produce una secuencia aleatoria que no contiene valores duplicados.
Otra propiedad de la secuencia aleatoria resultante es que [no es particularmente aleatorio] (http: //www.codinghorror) .com/blog/2007/12/the-danger-of-naivete.html). –
@SvenMarnach - Para la mayoría de los propósitos, sin embargo, es lo suficientemente aleatorio. Podría usar el enfoque doblemente aleatorio si lo quisiera más al azar. – Polynomial
Esto no tiene sentido. El OP puede usar llamadas de la biblioteca para hacerlo bien. Son más fáciles de usar, funcionan más rápido y son más legibles que una versión personalizada. No puedo pensar en ninguna razón por la que deba usar un algoritmo incorrecto aquí simplemente porque es probablemente "lo suficientemente aleatorio", cuando usar el algoritmo correcto no tiene ninguna desventaja en absoluto. –
I Creo que numpy.random.sample
no funciona bien, ahora. Esta es mi manera:
import numpy as np
np.random.choice(range(20), 10, replace=False)
En lugar de 'range (n)' (o 'arange (n)') como el primer argumento de 'choice', es equivalente a simplemente pasar' n', p. Ej. 'elección (20, 10, reemplazar = Falso)'. –
¿Qué quiere decir con "no repetitivo"? Que la secuencia de números aleatorios nunca se repite? Esto no es posible, ya que el estado del generador de números aleatorios debe caber en la memoria finita de una computadora. ¿O quiere decir que no hay un solo número aparece dos veces? –
No repetitivo significa que tiene una lista sin duplicados. – Polynomial
¿Quizás necesites una permutación aleatoria? http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.permutation.html – cyborg