how - random.rand python
Generar enteros aleatorios entre 0 y 9 (17)
El módulo de secrets
es nuevo en Python 3.6. Esto es mejor que el módulo random
para criptografía o usos de seguridad.
Para imprimir aleatoriamente un número entero en el rango inclusivo 0-9:
from secrets import randbelow
print(randbelow(10))
Para más detalles, ver PEP 506 .
¿Cómo puedo generar enteros aleatorios entre 0 y 9 (inclusive) en Python?
Por ejemplo, 0
, 1
, 2
, 3
, 4
, 5
, 6
, 7
, 8
, 9
Elija el tamaño de la matriz (en este ejemplo, he elegido el tamaño para ser 20). Y luego, usa lo siguiente:
import numpy as np
np.random.randint(10, size=(1, 20))
Puede esperar ver una salida del siguiente formulario ( se devolverán diferentes enteros aleatorios cada vez que lo ejecute; por lo tanto, puede esperar que los enteros en la matriz de salida difieran del ejemplo que se muestra a continuación ).
array([[1, 6, 1, 2, 8, 6, 3, 3, 2, 5, 6, 5, 0, 9, 5, 6, 4, 5, 9, 3]])
En el caso de números continuos, randint
o randrange
son probablemente las mejores opciones, pero si tiene varios valores distintos en una secuencia (es decir, una list
), también podría usar la choice
:
>>> import random
>>> values = list(range(10))
>>> random.choice(values)
5
choice
también funciona para un artículo de una muestra no continua:
>>> values = [1, 2, 3, 5, 7, 10]
>>> random.choice(values)
7
Si lo necesita "criptográficamente fuerte" también hay una secrets.choice
en python 3.6 y más reciente:
>>> import secrets
>>> values = list(range(10))
>>> secrets.choice(values)
2
Generando enteros aleatorios entre 0 y 9.
import numpy
X = numpy.random.randint(0, 10, size=10)
print(X)
Salida:
[4 8 0 4 9 6 9 9 0 7]
La mejor manera es usar la función de importación aleatoria.
import random
print(random.sample(range(10), 10))
o sin ninguna importación de la biblioteca:
n={}
for i in range(10):
n[i]=i
for p in range(10):
print(n.popitem()[1])
aquí, los popitems eliminan y devuelven un valor arbitrario del diccionario n
.
La pregunta original implica generar múltiples enteros aleatorios.
¿Cómo puedo generar enteros entre 0 y 9 (inclusive) en Python?
Sin embargo, muchas respuestas solo muestran cómo obtener un número aleatorio, por ejemplo, random.randint
y random.randint
.
Enteros aleatorios múltiples
Para mayor claridad, aún puede generar múltiples números aleatorios usando esas técnicas simplemente iterando N
veces:
import random
N = 5
[random.randint(0, 9) for _ in range(N)]
# [9, 7, 0, 7, 3]
[random.choice(range(10)) for _ in range(N)]
# [8, 3, 6, 8, 7]
Muestra de enteros aleatorios
Algunas publicaciones demuestran cómo generar de forma nativa múltiples enteros aleatorios. 1 Aquí hay algunas opciones que abordan la pregunta implícita:
random.sample
devuelve k
selecciones únicas de una población (sin reemplazo): 2
random.sample(range(10), k=N)
# [4, 5, 1, 2, 3]
En Python 3.6, random.choices
devuelve k
selecciones de una población (con reemplazo):
random.choices(range(10), k=N)
# [3, 2, 0, 8, 2]
Vea también esta publicación relacionada usando numpy.random.choice
.
1 A saber, @John Lawrence Aspden, @ST Mohammed, @SiddTheKid, @ user14372, @zangw, et al.
2 @prashanth menciona este módulo que muestra un entero.
Para el ejemplo que ha dado (números enteros desde 0 hasta 9), la solución más limpia es la siguiente:
from random import randrange
randrange(10)
Prueba esto a través de random.shuffle
>>> import random
>>> nums = [x for x in range(10)]
>>> random.shuffle(nums)
>>> nums
[6, 3, 5, 4, 0, 1, 2, 9, 8, 7]
Prueba esto:
from random import randrange, uniform
# randrange gives you an integral value
irand = randrange(0, 10)
# uniform gives you a floating-point value
frand = uniform(0, 10)
Si quieres usar numpy entonces usa lo siguiente:
import numpy as np
print(np.random.randint(0,10))
Tratar:
from random import randint
print(randint(0, 9))
Más información: https://docs.python.org/3/library/random.html#random.randint
Tuve mejor suerte con esto para Python 3.6
str_Key = ""
str_RandomKey = ""
for int_I in range(128):
str_Key = random.choice(''0123456789'')
str_RandomKey = str_RandomKey + str_Key
Simplemente agregue caracteres como ''ABCD'' y ''abcd'' o ''^! ~ = -> <'' para modificar el grupo de caracteres del que se va a extraer, cambie el rango para alterar el número de caracteres generados.
Utilicé variable para controlar el rango.
from random import randint
numberStartRange = 1
numberEndRange = 9
randomNumber = randint(numberStartRange, numberEndRange)
print(randomNumber)
Utilicé la función de impresión para ver los resultados. Puedes comentar está fuera si no lo necesitas.
random.sample
es otro que puede ser usado
import random
n = 1 # specify the no. of numbers
num = random.sample(range(10), n)
num[0] # is the required number
>>> import random
>>> random.randrange(10)
3
>>> random.randrange(10)
1
Para obtener una lista de diez muestras:
>>> [random.randrange(10) for x in range(10)]
[9, 0, 4, 0, 5, 7, 4, 3, 6, 8]
from random import randint
x = [randint(0, 9) for p in range(0, 10)]
Esto genera 10 enteros pseudoaleatorios en el rango de 0 a 9 inclusive.
import random
print(random.randint(0,9))
random.randint(a, b)
Devuelve un entero aleatorio N tal que a <= N <= b.
Docs: https://docs.python.org/3.1/library/random.html#random.randint